Tag: entity framework 4

ADO.Net EF – 如何在模型第一种方法中定义外键关系?

我一直有以前的问题关于类inheritance和围绕此构造一个数据库,并使用entity framework没有成功。 所以我试图在Visual Studio中创build实体,并查看它自动创build的数据库表。 我有一个实体MediaItem这是抽象和游戏inheritance这一点。 游戏有一个Console(Int),它对应于ConsoleID。 但是,当我生成数据库时,我得到一个额外的不需要的列(ConsoleTypes_ConsoleID)MediaItems_Game表内。 为什么是这样的,我怎样才能防止这种情况发生? 谢谢。

在EF 4.0中将string转换为Int

有没有办法做到这一点? 我在数据库中有一个string字段,我想parsing它到我的LINQ查询中的int属性(是的,它必须在IQueryable级别,而不是在内存中)。 我知道2年前,EF 1.0无法做到这一点(即使LINQ to SQL支持这种基本function),但我只是想知道是否有人提出了一个在这一点上做到这一点? 自定义函数映射? 特殊的语法? 任何东西…. 更新: 我尝试了一个模型定义的函数如下: <Function Name="ConvertToInt32" ReturnType="Edm.Int32"> <Parameter Name="v" Type="Edm.String" /> <DefiningExpression> CAST(v AS INT) </DefiningExpression> </Function> [EdmFunction("Model.Repository", "ConvertToInt32")] public static int ConvertToInt32(string value) { throw new InvalidOperationException("Only valid when used as part of a LINQ query."); } 但似乎并不奏效。 我得到运行时exception: ErrorDescription=Type 'INT' could not be found. Make sure […]

entity framework4从实体集合中删除对象

我有一个与“RequestProperty”实体具有1 .. *关系的“请求”实体。 所以在Request中有RequestProperty对象的集合。 当我更新“请求”时,我想删除RequestProperty EntityCollection中的所有项目,并从传入域对象中添加新项目。 当遍历Request.Properties集合并调用项目上的remove或DeleteObject时,枚举失败,因为集合已被修改。 截至目前我正在这样做: while (true) { if (newRequest.Properties.Count > 0) context.RequestPropertySet.DeleteObject(newRequest.Properties.First()); else break; } 既然这不是很“酷”,我认为必须有另一种方式来清空一个关系集合。 谢谢你的想法。

EF包括其他实体(通用存储库模式)

我在entity framework代码优先使用通用存储库模式。 一切工作正常,直到我需要在查询中包含更多的实体。 我成功地包含了一个实体,但现在我不知道如何包含多个实体。 看看我到目前为止: public IQueryable<TEntity> GetQuery<TEntity>() where TEntity : class { var entityName = GetEntityName<TEntity>(); return _objectContext.CreateQuery<TEntity>(entityName); } public IList<TEntity> GetQueryWithInclude<TEntity>(string toInclude) where TEntity : class { var entityName = GetEntityName<TEntity>(); return _objectContext.CreateQuery<TEntity>(entityName).Include(toInclude).ToList(); } private string GetEntityName<TEntity>() where TEntity : class { return string.Format("{0}.{1}", _objectContext.DefaultContainerName, _pluralizer.Pluralize(typeof(TEntity).Name)); } 我试图做的,但没有工作是传递一个string数组到一个函数,然后尝试“追加”查询顶部的包括。 我想知道如果我调用GetQueryWithInclude,并一次传递一个实体名称(实际上是一个导航属性)来聚合查询的结果,但我担心这可能会重复每个调用的查询结果…你认为最好的方法是什么? 提前致谢! 更新: 这是我想要实现的一个例子: public […]

entity framework4 CTP 4 / CTP 5通用存储库模式和单元可testing

我正在玩最新的entity frameworkCTP 5版本,并build立一个简单的asp.net MVC博客,我只有两个表:发表和评论。 这完全在POCO中完成,我只需要DbContext部分的帮助,我需要它是unit testing(使用IDbSet?),我需要一个简单/通用的存储库模式来添加,更新,删除,检索。 任何帮助表示赞赏。 谢谢。

自数据库创build以来,支持<Database>上下文的模型已经发生了变化

错误消息: “数据库创build后,支持”AddressBook“上下文的模型已经发生了变化,无论是手动删除/更新数据库,还是使用IDatabaseInitializer实例调用Database.SetInitializer,例如,RecreateDatabaseIfModelChanges策略会自动删除并重新创build数据库,可以select新的数据。“ 我正在尝试使用代码优先function,以下是我写的: var modelBuilder = new ModelBuilder(); var model = modelBuilder.CreateModel(); using (AddressBook context = new AddressBook(model)) { var contact = new Contact { ContactID = 10000, FirstName = "Brian", LastName = "Lara", ModifiedDate = DateTime.Now, AddDate = DateTime.Now, Title = "Mr." }; context.contacts.Add(contact); int result = context.SaveChanges(); Console.WriteLine("Result :- "+ result.ToString()); } 上下文类: […]

entity framework4 – AddObject与附加

最近我一直在使用Entity Framework 4,并且对于何时使用ObjectSet.Attach和ObjectSet.AddObject有些困惑。 从我的理解: 当实体已经存在于系统中时使用“附加” 创build一个全新的实体时使用“AddObject” 所以,如果我正在创build一个新的人 ,我这样做。 var ctx = new MyEntities(); var newPerson = new Person { Name = "Joe Bloggs" }; ctx.Persons.AddObject(newPerson); ctx.SaveChanges(); 如果我正在修改现有的人 ,我这样做: var ctx = new MyEntities(); var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name = "Joe Bloggs" }; existingPerson.Name = "Joe Briggs"; ctx.SaveChanges(); 请记住,这是一个非常简单的例子。 实际上,我使用的是Pure POCO(无代码生成),Repository模式(不处理ctx.Persons)和Unit of Work(不处理ctx.SaveChanges)。 但是“下面”,以上就是我执行中发生的事情。 现在,我的问题 […]

.ToList(),.AsEnumerable(),AsQueryable()之间有什么区别?

我知道一些LINQ to Entities和LINQ to Objects的区别,第一个实现了IQueryable ,第二个实现了IEnumerable ,我的问题范围在EF 5之内。 我的问题是这三种方法的技术差异是什么? 我看到,在许多情况下,所有这些工作。 我也看到使用它们的组合.ToList().AsQueryable() 。 这些方法究竟意味着什么? 是否有任何性能问题或会导致相互使用的问题? 为什么会使用.ToList().AsQueryable()而不是.AsQueryable() ?

虚拟关键字在Entity Framework 4.1 POCO代码中有什么作用?

在EF Code First中的属性上使用virtual关键字是否有效? 有人可以在不同的情况下描述它的所有后果吗? 例如,我知道它可以控制延迟加载 – 如果在ICollection / one-to-many关系属性上使用virtual关键字,则默认情况下它将被延迟加载,而如果将virtual关键字取消,它将会急于加载。 在EF中使用POCO实体, virtual关键字还有什么其他效果? 我应该默认使用virtual的所有属性,或默认不使用它?

自我跟踪实体与POCO实体

我们正在开始一个新的基于networking的产品,我们计划通过WCF服务来展示我们的业务逻辑。 我们将使用ASP.NET 4.0,C#,EF 4.0。 今后,我们希望基于这些服务来构buildiphone应用程序和WPF应用程序。 我一直在阅读很多关于使用POCO vs自我跟踪实体(STE)的信息,从我的理解来看,STE在Webscheme中效果不佳。 任何人都可以在这个问题上更多地了解?