Tag: entity framework

如何从db刷新ObjectContext缓存?

我们正在从db加载数据: var somethings = Context.SomethingSet.ToList(); 然后有人删除或添加上下文之外的行。 Out上下文仍然有缓存已删除的对象,因为它不知道它们已被删除。 即使我调用Context.SomethingSet.ToList(),我们的上下文仍包含已删除的对象,导航属性也不正确。 从数据库刷新整个集合的最佳方法是什么?

.netentity framework与oracle 11g

我正在使用oracle提供程序的entity framework(Oracle.ManagedDataAccessDTC) 从visual studio可以正常运行一切,但是当我将它发布到IIS时,我收到一个连接错误exception。 这是我的webconfig女巫在visual studio上运行得很好: 这是我在IIS上遇到的错误: Server Error in ‘/EA’ Application. ORA-12154: TNS:não foi possível resolver o identificador de conexão especificado Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: […]

可空值的复杂类型

对于只具有可空属性的entity framework中的复杂类型,为什么对于类似下面的内容需要实例化复杂类型: [ComplexType] public class Address { public string Address1 { get; set; } } public class Customer { [Key] public int CustomerId {get;set;} public Address Address {get;set;} } 更具体地说,如果您没有声明和地址类型,则会得到“非可空成员的空值。成员:’地址’。” 按照这个问题 。 只要复杂类型中的所有属性都可以为空,为什么entity framework需要一个Address实例? 由于Address1是可空的,为什么它不能只假设并在行中创建表(和列Address_Address1)和null值,就像我创建了一个具有空Address1的Address实例一样? 或者是否有我可以申请实现的属性/流畅设置?

属性无法防止过度发布

阻止MVC 4过度发布的最佳方法是什么? 根据MS消息来源,[Bind]属性应该是通过阻止传入的表单值进入数据库来防止过度发布的最简单方法。 使用最新版本的MVC和EF,这似乎没有像预期/广告一样工作,除非我遗漏了一些重要的东西。 从Wrox Professional ASP.NET MVC 4 (Jon Galloway的第7章)开始,以下类应该防止过度发布: [Bind(Exclude=”IsAdmin”)] public class User { public int ID { get; set; } public string FirstName { get; set; } public bool IsAdmin { get; set; } } 但是所有[Bind]属性都会阻止表单提交值绑定到模型。 然后,模型具有空白/默认值,并将其写回数据库。 在这种情况下,它会确保IsAdmin = false每次使用此模型调用.SaveChanges()。 任何“真实”值都会被覆盖。 这是一个巨大的安全失败。 替代语法 – 将[Bind]放在Edit controller action参数中 – 完全相同: public ActionResult Edit([Bind(Exclude […]

entity framework包含命令 – 左连接还是内连接?

在我调查Include和Join之间的区别时,我发现: 如果数据库不包含外键 – 它没有导航道具,所以最好使用Join 如果它确实有导航道具 – 那么使用Include 。 (它还可以节省数据库命中率。) 但这里的一个答案引起了我的注意: Include实现为连接。 根据所包含链接的可为空性 ,它是内部或左侧连接。 题 : 无效如何影响左/内连接? 在Sql server中我可以有一个Cities表和Persons表,一个人可以有一个NULL CityID 。 为什么entity framework会为我决定它是什么类型的连接? 编辑:可视化: 现在让我们将CityId更改为null: 这是变化:

找不到CreateQuery()方法

我是entity framework的新手。 我找不到以下方法CreateQuery() 为什么我找不到这种方法?!!

如何告知entity frameworkfunction导入存储过程返回的列不可为空?

我有一个SQL Server存储过程,它重新解决这个问题: CREATE PROCEDURE [jp].[GetFoo] @Guid UNIQUEIDENTIFIER AS SELECT CONVERT(BIT, (CASE WHEN [dbo].[GetBar](T.Col2) = 3 THEN 1 ELSE 0 END)) IsGetBarCol2EqualToThree FROM [dbo].[MyTable] T WHERE T.Col1 = @Guid 当我在EF中执行函数导入/获取列信息时,列IsGetBarCol2EqualToThree的推断类型是Nullable 。 但是这个领域不可能是空的,所以我希望它只是bool 。 有没有办法在更新时持续执行此操作(即不依赖于修改任何生成的代码)? SQL Server版本是2005,我使用Visual Studio 2010SP1和EF 4,项目是针对.net 4.0编译的。

具有代码优先迁移的一个DB上的多个DbContexts

我偶然发现了这个问题所描述的问题 。 另外,我不想从数据库中删除__migrationHistory表。 我尝试使用建议的解决方案使用一个“超级”上下文,其中包含所有DbSet s并使用正常的上下文,但我收到了一个错误。 (“模型支持DbContext已更改”)如果您只是从SQL服务器中删除__migrationHistory表,这很容易避免,但正如我所说,我想保留历史记录。 我找到了一个简单易用的解决方案,请参阅下面的答案。

使用ASP.NET清除缓存的最有效方法

我正在构建一个ASP.NET/Umbraco驱动的网站,它是通过entity framework驱动的非常自定义的数据,我们不得不缓存相当多的数据查询(例如按关键字搜索),因为它是一个繁忙的网站。 但是当用户创建新的数据条目时,我需要清除所有缓存的查询(搜索等…),以便在结果中提供新条目。 所以在我的创建,删除和更新方法中,我调用以下方法: public static void ClearCacheItems() { var enumerator = HttpContext.Current.Cache.GetEnumerator(); while (enumerator.MoveNext()) { HttpContext.Current.Cache.Remove(enumerator.Key.ToString()); } } 这真的很糟糕吗? 我看不出我应该如何清除缓存的项目?

为什么我无法使用Entity Framework保存当前的DateTime.Now

using (var transaction = new TransactionScope()) { using (var db = new MyEntities()) { var newGroup = new Groups { GroupDate = DateTime.Now, GroupName = “someName” }; db.Groups.Add(newGroup); db.SaveChanges(); } transaction.Complete(); } GroupId和GroupDate是PK,GroupId是Identity(步骤= 1)而GroupDate不是 任何人都可以告诉我为什么在使用像这样的简单代码时发生这种exception以及如果可能的话如何关闭乐观并发更新 存储更新,插入或删除语句会影响意外的行数(0)。 自实体加载后,实体可能已被修改或删除。 刷新ObjectStateManager条目。