Tag: ef code first

entity frameworkCodeFirst与其他信息的多对多关系

我有以下型号: class Contract { string ContractID{get;set;} ICollection Parts{get;set;} } class Part { string PartID{get;set;} ICollection Contracts{get;set;} } 问题是Part和Contract之间的关系还包含以下附加信息: class ContractParts { Contract{get;set;} Part{get;set;} Date{get;set;} //additional info Price{get;set;} //additional info } 我将如何为此编写实体上下文?

entity framework4.1:无法从DbQuery转换为ObjectQuery

我有以下代码: public void DeleteAccountsForMonth(int year, int month) { var result = from acm in this._database.AccountsOnMonth where ((acm.Year == year) && (acm.Month == month)) select acm.Id; var query = (ObjectQuery)result; string sql = string.Format( “DELETE FROM [AccountsOnMonth] WHERE [AccountsOnMonth].[Id] IN ({0})”, query.ToTraceString() ); var parameters = new List(); foreach (ObjectParameter parameter in query.Parameters) { parameters.Add(new System.Data.SqlClient.SqlParameter […]

entity framework只读集合

考虑一个客户,公司,员工等具有ContactInfo属性的域,该属性又包含一组地址,电话,电子邮件等等…… 这是我的缩写ContactInfo: public class ContactInfo : Entity { public ContactInfo() { Addresses = new HashSet(); } public virtual ISet Addresses { get ; private set; } public Address PrimaryAddress { get { return Addresses.FirstOrDefault(a => a.IsPrimary); } } public bool AddAddress(Address address) { // insure there is only one primary address in collection if (address.IsPrimary) […]

如何在每个层次结构(TPH)映射中共享公用列名称

我正在使用Entity Framework 4 CTP5代码第一种方法,我有一个每层次表(TPH)映射。 层次结构中的某些类具有共同的属性。 public class BaseType { public int Id { get; set; } } public class A : BaseType { public string Customer { get; set; } public string Order { get; set; } } public class B : BaseType { public string Customer { get; set; } public string Article { […]

使用Entity Framework 4和Code-First从数据库中排除字段/属性

我想知道有没有办法从数据库中排除一些字段? 例如: public class Employee { public int Id { get; set; } public string Name { get; set; } public string FatherName { get; set; } public bool IsMale { get; set; } public bool IsMarried { get; set; } public string AddressAs { get; set; } } 如何从数据库中排除AddressAs字段?

没有声明外键的导航属性

我的所有模型都包含至少两个关联。 在ef4中对此进行建模时,我只能通过使用流畅的界面在没有第二个外键属性的情况下执行此操作。 ForeignKey似乎是正确使用的属性,除了它需要一个字符串参数。 所以我的问题是,你能拥有一个导航属性并使用属性声明它吗? public class User : IAuditable { // other code public virtual User Creator { get; set; } public virtual User Modifier { get; set; } }

如何使用entity framework流畅的API配置多对多关系

我试图首先在EF代码中设置多对多关系,但默认约定是错误的。 以下类描述了这种关系: class Product { public int Id { get; set; } public string Name { get; set; } } class Account { public int Id { get; set; } public string Name { get; set; } public virtual ICollection Products { get; set; } } 一个帐户可以有许多产品。 但是,EF约定将创建DB表: Products Table ————– Id Name Account_Id <- […]

Entity Framework 4 Code First是否支持像NHibernate这样的身份生成器?

一年前提出的这个问题是类似的: entity framework4是否支持像NHibernate这样的id值的生成器? 但我想知道的是,代码首先是CTP是否增加了对身份生成策略的支持。 如果没有,有没有人知道EF的一个很好的扩展点来实现类似的东西? 我目前正在使用使用GUID作为标识符的模型类。 使用EF插入时,它们保留其Guid.Empty初始值。 我知道您可以将DB中的列的默认值设置为newid()但这会破坏客户端身份生成的目的。 entity framework是否还不够成熟,无法在分布式断开连接的系统中使用?

首先在EF代码中混合使用Fluent API和DataAnnotations

虽然我们主要使用流畅的配置来代码优先POCO,但我们发现对表名,PK等使用数据注释很有用,因为它使得没有引用的非EF组件更容易使用到ObjectContext与这些实体进行交互。 根据我们的经验,似乎两种配置样式可以自由混合,流畅的配置覆盖DataAnnotations。 这在任何地方记录? 这种混合配置有任何风险吗? 我们目前正在使用EF 4.3.1