我刚刚"升级"到c#SDK的6.1.0,发现FacebookAuthClient已被删除.我检查了github上的提交日志,那里没有太多信息.
有谁知道你应该如何使用最新版本的SDK进行身份验证?
获取控制器和操作的完整URL(包括协议和域)的正确方法是什么?我需要这个能够通过电子邮件发送链接到页面.
我希望只使用Url.Action()并将其连接到Request.Url的当前服务器主机名.但是,似乎Url.Action是上下文敏感的,因此如果您已经在同一个控制器中,则不会显示完整路径.
有任何想法吗?
谢谢
詹姆士
我正在设计一个分层数据库结构的设计,该结构模拟包含产品的目录(这与此问题类似).数据库平台是SQL Server 2005,目录非常大(750,000个产品,4个级别的8,500个目录部分),但是相对静态(每天重新加载一次),所以我们只关心READ性能.
目录层次结构的一般结构是: -
我们使用嵌套集模式来存储层次结构级别,并将存在于该级别的产品存储在单独的链接表中.因此,简化的数据库结构将是
CREATE TABLE CatalogueSection
(
SectionID INTEGER,
ParentID INTEGER,
LeftExtent INTEGER,
RightExtent INTEGER
)
CREATE TABLE CatalogueProduct
(
ProductID INTEGER,
SectionID INTEGER
)
Run Code Online (Sandbox Code Playgroud)
我们确实有一个额外的复杂性,因为我们有大约1000个独立的客户群,这些客户群可能会也可能不会看到目录中的所有产品.因此,我们需要为每个客户组维护一个单独的"副本"目录层次结构,这样当他们浏览目录时,他们只能看到他们的产品,而且他们也看不到任何空的部分.
为了便于实现这一点,我们在下面的部分"维护"了一个层次结构的每个级别的产品数量表.因此,即使产品仅直接链接到层次结构的最低级别,它们也会在树中一直计算.这个表的结构是
CREATE TABLE CatalogueSectionCount
(
SectionID INTEGER,
CustomerGroupID INTEGER,
SubSectionCount INTEGER,
ProductCount INTEGER
)
Run Code Online (Sandbox Code Playgroud)
因此,对于问题 ,层次结构的顶层级别的性能非常差.显示所选目录部分(以及所有子部分)中"前10名"产品的一般查询正在1分钟内完成.在层次结构的较低部分,它更快但仍然不够好.
我已经在所有关键表上放置了索引(包括覆盖索引),通过查询分析器,索引调整向导等运行它,但仍然无法让它执行得足够快.
我想知道设计是否存在根本缺陷,还是因为我们有这么大的数据集?我们有一个合理的开发服务器(3.8GHZ Xeon,4GB RAM),但它只是不工作:)
谢谢你的帮助
詹姆士
我正在重构我们的BI层,以使我们的代码更"松散耦合",我有兴趣听到你们认为可能有意义的改进吗?
目前,我们的API类似于以下内容: -
// Fetch a collection of objects
ProductCollection prods = Product.GetProducts();
// Load an individual object, make change and save it back
Product p = new Product();
if(p.Load(productID))
{
p.Name = "New Name";
p.Save();
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我们获取对象集合/加载单个对象和保存更改的方法都内置在"Model"类中.我们的每个Model类都继承自ObjectBase基类,该基类包括数据库访问函数和更改跟踪,因此当有人通过属性更改值时,对象会自动标记为脏,并且会向任何订阅这些事件的对象(UI)触发通知.
我想要做的是使用"存储库模式",以便我们可以从模型中抽象出数据库实现.但是,我一直在研究的大部分代码似乎都暗示"模型"类不应该包含任何智能,而应该只是数据的容器.相反,应该通过使用服务来应用逻辑.这是否意味着完成上述我需要做的事情
List<Product> prods = ProductService.GetProducts();
Product p = ProductService.GetSingleProduct(productID);
p.Name = "New Name";
ProductService.SaveProduct(p);
Run Code Online (Sandbox Code Playgroud)
这似乎是一种更复杂的方式,并且使得在业务对象中封装功能变得更加困难.
有人可以解释为什么这是一个更好的方式,或者我可能误解了这些概念?
谢谢
詹姆士
我需要一个正则表达式来替换任何单词中间的连字符,但不要触及前导或尾随或单独的连字符.这适用于Regex.Replace()中的.NET
我尝试了以下内容
\w[-]\w
Run Code Online (Sandbox Code Playgroud)
但这也捕获了连字符两侧的字符.举个例子,我需要的是以下字符串
- 测试 - 测试 - 测试
如果替换字符是!,成为
- 测试!测试 - 测试
任何帮助都很受欢迎
谢谢
詹姆士
我们要求通过远程通知(数据库值的更改)自动关闭我们的ASP.NET MVC网站.哪里是实施这个的最佳地点?
更新
很多建议使用app_offline,但这种情况将每天发生,并且将完全由数据库启动,所以我宁愿让应用程序采取主动而不是外部推送文件.
此外,我可能需要将用户重定向到保留页面(最好是MVC控制器方法,以保持一致).我更倾向于在我的BaseController中捕获它并处理它