Tag: entity framework 4

如何在EF4实体上提取属性的数据库表和列名?

我正在为使用EF4进行数据访问层的应用程序编写审计组件。 我能够非常轻松地确定哪些实体已被修改,并且通过ObjectStateEntry对象,我可以提取已修改的原始值,当前值,实体名称和属性名称,但我还想提取原始表格和SQL Server中使用的列名和列名(因为它们并不总是与模型的实体和属性名称匹配) 有谁知道这样做的好方法? 它甚至可能吗? 映射显然存储在MSL中,但我无法找到以编程方式访问这些映射的方法。

entity framework中的循环依赖

是否可以保存具有循环依赖性的模型? 我对数据库进行了非规范化: 用户 ——– 用户身份 用户名 LastOrder – 最后订单的fk 订购 ——- 的OrderId ORDERNAME 用户身份 订购日期 是否可以使用entityFramework来保存这样的东西? 我应该改变什么使它工作因为现在我有错误: 无法确定相关操作的有效排序。 由于外键约束,模型要求或存储生成的值,可能存在依赖关系。

Entity Framework如何管理映射查询结果为匿名类型?

请考虑以下示例LINQ to entity查询 from history in entities.foreignuserhistory select new { history.displayname, login=history.username, history.foreignuserid } ToTraceString()返回字符串如下: SELECT “Extent1″.”foreignuserid” AS “foreignuserid”, “Extent1″.”displayname” AS “displayname”, “Extent1″.”username” AS “username” FROM “integration”.”foreignuserhistory” AS “Extent1” 对我来说问题是列与查询的顺序不同,并且不会在示例中使用login别名。 Entity Framework在哪里存储匿名类型的映射信息? 背景:我将使用LINQ to entity进行大规模操作,使用select操作开发insert。 更新:使用select进行插入并不困难,除了未知列到属性映射算法。 可以使用元数据获取目标ObjectSet表名和列名,构建INSERT INTO tableName (column_name1, …) sql语句字符串,然后附加一些ObjectQuery.ToTraceString SELECT语句。 然后使用((EntityConnection)ObjectContext.Connection).StoreConnection和填充命令来自ObjectQuery的参数创建带有结果文本的DbCommand 。 所以问题是在插入和选择的记录中找到匹配的列顺序。

entity framework为NOT NULL列生成值,其默认值在db中定义

嗨,我有一个表客户。 表中的一列是DateCreated 。 此列为NOT NULL但在db中为此列定义了默认值。 当我从我的代码中使用EF4添加新Customer 。 var customer = new Customer(); customer.CustomerName = “Hello”; customer.Email = “hello@ello.com”; // Watch out commented out. //customer.DateCreated = DateTime.Now; context.AddToCustomers(customer); context.SaveChanges(); 上面的代码生成以下查询。 exec sp_executesql N’insert [dbo].[Customers]([CustomerName], [Email], [Phone], [DateCreated], [DateUpdated]) values (@0, @1, null, @2, null) select [CustomerId] from [dbo].[Customers] where @@ROWCOUNT > 0 and [CustomerId] = scope_identity() […]

如何确定是否在未加载相关记录的情况下设置entity framework中的导航属性

我不确定EF 4中的导航属性,所以我会请你解释一下。 让我们想象一下这种情况: 一个) 我有两个实体A和B ,其关系是N到N(多对多)和我的数据库A和B 树表以及带有两个外键的 AB 。 在这种情况下,EF创建一个导航属性,让我们称之为X ,也称为XReference 。 B) 我有两个实体A和B ,其关系为1到N(一对多), 两个表在我的数据库A和B 有一个外键 。 在这种情况下,EF创建一个导航属性,让我们称之为Y 但不是YReference 。 现在让我们采用场景A和B,并尝试找出B中是否有A的引用: 我的场景代码: 一个): bool isA = a.XReference.EntityKey != null; 我没有加载B记录(对吗?) B): bool isA = aBAny(x => x.BId == AId); 我加载B记录 我的问题: 为什么EF不创建YReference,我不能在场景B中使用EntityKey属性。 在我的代码场景B中,我真的不加载B的任何记录吗? 您是否知道更快速地运行此查询的方法? 谢谢你们的帮助,我希望我能说清楚:-)

EF 4 – 没有代理的延迟加载

我读过在需要使用延迟加载和更改跟踪时使用代理。 换句话说,要使用延迟加载,我必须启用代理。 到现在为止还挺好。 关键是我可以使用下面的代码设置上下文不使用代理甚至使用延迟加载。 ctx = new SchoolEntities(); ctx.ContextOptions.ProxyCreationEnabled = false; ctx.ContextOptions.LazyLoadingEnabled = true; ProxyCreationEnabled属性是仅与更改跟踪代理相关还是我遗漏了某些内容? 有人可以用一些细节解释一下吗? 谢谢! EDIT1 我没有使用POCO / DbContext。 我使用带有ObjectContext的常规edmx EF模型。 我知道POCO实体的代理对于更改跟踪和延迟加载的重要性。 为什么在常规EDMX模型中使用Proxies?

实体数据模型向导太慢(SQL数据库)

使用:visual studio 2012 Ultimate,ADO Entity Framework 6,数据库:Sql express 2014(安装在本地PC上),数据库表计数:174表。 我正在尝试使用实体数据模型向导创建数据库模型,但创建模型大约需要8个小时(对话框没有响应)。 我试图重新安装visual studio和Entity Framework但同样的问题。 我需要任何可以加速数据库模型创建的想法。

EF代码优先为一个DbSet的PluralizingTableNameConvention

如何仅针对单个表/ DbSet切换此约定PluralizingTableNameConvention? 据我所知,我只能对给定的DbContext所有DbSets执行此DbContext

如何使用存储库模式和entity framework连接多个表?

我需要使用存储库模式和entity framework(使用C#)连接多个表。 这可能吗? 如果是这样,请告诉我如何做同样的事情。

c#DbSet – 无法获取内部对象

我需要将实体切换到内部。 所以我创造了它。 没有构建/运行时错误。 但是当我想使用DbSet对象时我不能,因为对象似乎没有初始化! 我的ContextEntities: public partial class Entities { internal DbSet EmployeeSet { get; set; } } 我这样用: Entities context = new Entities(); List employees = context.EmployeeSet.ToList(); 但“EmployeeSet”为空。 我认为这是因为它没有在get中实例化。 如果我像这样使用public,它可以工作: public partial class Entities { public DbSet EmployeeSet { get; set; } } 问题:如果DbSet标记为内部,它可以工作吗? 如果是这样的话? 为什么会破坏它? (谢谢Scott Stafford)