我喜欢使用Entity Framework(4)进行模型优化设计的选项.但是,除了主键之外,我还无法找到如何向表中添加其他索引.
这在视觉设计师中是否可行?或者您是否需要在创建数据库后手动添加索引(这将是设计人员的缺点)?
我想每个人偶尔遇到这个问题:你有两个表有自动编号需要合并的主键.使用自动编号主键有利于说应用程序生成的密钥有很多很好的理由,但与其他表合并必然是最大的缺点之一.
出现的一些问题是重叠的id和不同步的外键.我想听听你解决这个问题的方法.我总是遇到问题,所以如果有人有某种通用的解决方案,我很好奇.
- 编辑 -
在回答建议使用guid或其他非数字键的答案时,有些情况事先提醒使用自动编号键(后来你后悔),或者你正在接管其他人的项目,或者你得到一些你必须使用的遗留数据库.所以我真的在找一个你无法控制数据库设计的解决方案.
我正在开发一个ASP.NET MVC应用程序.大多数控制器操作都不应该被缓存.因此我输出no-cache标头Application_BeginRequest:
protected void Application_BeginRequest()
{
HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
}
Run Code Online (Sandbox Code Playgroud)
应用程序在IIS7上运行,并带有模块配置设置runAllManagedModulesForAllRequests="true".这意味着所有静态文件也会通过请求管道(并禁用缓存).
为这些静态文件启用缓存的最佳方法是什么?在设置响应缓存标头之前是否必须检查扩展?Application_BeginRequest或者是否有更简单的方法(例如完全绕过静态文件的请求管道)?
除非明确启用,否则ASP.NET MVC不再允许json GET请求JsonRequestBehavior.AllowGet.我有几个我希望缓存的AJAX请求,所以我想允许GET请求.
启用GET请求的确切安全含义究竟是什么?如何以其他方式对抗它们?
我正在构建一个ASP.NET Web应用程序,使用Windows Identity Foundation对用户进行身份验证.
该组织有一个内部部署ADFS STS.他们的Office365通过Microsoft Federation Gateway与内部部署STS进行身份验证.新的Web应用程序还将针对带有WIF的内部部署STS进行身份验证.
我可以在新应用程序和Office365环境之间建立静默单一登录吗?因此,用户登录Web应用程序后无需登录Office365,反之亦然.
我刚刚开始使用Azure ServiceBus.有一点我不完全清楚,我很难找到答案.
如果我打电话message.Complete()给订阅消息,这是否意味着此消息将不再发送给任何其他订阅者,或者我是否仅为当前订阅者完成此消息?换句话说,服务总线是否跟踪每个订户或每个订阅的消息?
在我的特定用例中,我希望消息由所有订阅者处理,而不是由任何/一个订阅者处理.这主题有可能吗?
我正在尝试使用.NET SDK将以下类保留到DynamoDB:
public class MyClass
{
public string Id { get; set; }
public string Name { get; set; }
public object Settings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
问题在于Settings属性.它可以是任何类型的对象,我事先并不知道可能分配给它的是什么.当我尝试将其持久化到DynamoDB时,我得到以下异常:
System.InvalidOperationException: 'Type System.Object is unsupported, it has no supported members'
Run Code Online (Sandbox Code Playgroud)
文档模型和对象持久性模型方法都会导致相同的异常.
有没有办法在DynamoDB中保留这些对象?其他数据库(如MongoDB和Azure DocumentDB)可以毫无问题地执行此操作,并且可以将它们反序列化为具有鉴别器的正确类型,或者作为动态JSON对象.
我正在使用带有.NET/Entity Framework 4 RTM的Visual Studio 2010 RTM和模型驱动的设计方法.当我使用DateTimeOffset字段创建实体时,EF建模器会尝试将DateTimeOffset映射到SQL日期时间而不是SQL datetimeoffset.我正在使用SQL Server 2008 Express,因此数据库中支持datetimeoffset.
Visual Studio出现此错误:
2019年错误:指定的成员映射无效.类型'Data.SqlStorage.MyType'中成员'Created'的类型'Edm.DateTimeOffset [Nullable = False,DefaultValue =,Precision =]'与'SqlServer.datetime不兼容[Nullable = False,DefaultValue =,Precision = 3]'成员'创建'类型'Data.SqlStorage.Store.MyTypes
如果我直接在EDMX StorageModels xml部分编辑类型,我会收到以下错误:
错误40:类型datetimeoffset未使用命名空间或别名限定.只有PrimitiveTypes可以无限制地使用.
为什么建模者没有正确地将其映射到SQL datetimeoffset类型?当我还在使用Visual Studio 2010和.NET framework 4的beta版本时,也会出现此问题.
假设下表MyObjects:
Id (PK, int)
DecimalField (decimal)
TextField (nvarchar)
Run Code Online (Sandbox Code Playgroud)
我已经添加了一个额外的索引DecimalField.
考虑以下LINQ to Entities查询来检索对象:
db.MyObjects.FirstOrDefault(r => r.DecimalField == localValue1 && r.TextField == localValue2)
Run Code Online (Sandbox Code Playgroud)
由于索引,重要的是EF生成的查询使WHERE子句中的属性顺序保持相同(即DecimalField第一和TextField第二),否则将发生表扫描并且索引无用.如何强制EF在WHERE子句中保持某个顺序?ad hoc和编译查询之间有区别吗?
我正在开发一个具有一些潜在大数据表的asp.net应用程序.我想知道定义主键的最佳方法是什么.我知道之前有人问过,但由于这是针对特定情况的,我认为这个问题是有效的.
我在SQL Server 2008数据库上使用Entity Framework 4.
考虑以下因素,定义主键有哪些可能性:
到目前为止,我自己想出的是一个自定义算法,它生成一个日期时间部分和一个随机部分,转换为十六进制字符串表示.这让我的字符串略短于guid.我仍然可以将它转换为base64,但这将违反项目nr 6.
谢谢你的建议.
.net ×4
c# ×4
sql-server ×3
asp.net ×2
asp.net-mvc ×2
adfs2.0 ×1
asp.net-core ×1
azure ×1
caching ×1
iis ×1
jquery ×1
json ×1
office365 ×1
wif ×1