Tag: ef code first

使用EntityTypeConfiguration 时的抽象域模型基类

获取Base对象属性的中心映射是否有一些技巧? 使用EntityTypeConfiguration时是否有一些抽象类的简单模式。 非常感谢。 我无法申报课程 Public class BaseEntityConfig : EntityTypeConfiguration 类似的问题,我无法得到工作的答案如何创建和使用generics类EntityTypeConfiguration 和动态方式生成EntityTypeConfiguration:类型’TResult’必须是不可为空的值类型 public abstract class BosBaseObject { public virtual Guid Id { set; get; } public virtual string ExternalKey { set; get; } public byte[] RowVersion { get; set; } } public class News : BosBaseObject { public String Heading { set; get; } } public […]

entity framework6插入重复值

我有以下两个实体: public class Artist { [Key] public string ArtistId { get; set; } public string Name { get; set; } public virtual ICollection Genres { get; set; } } public class Genre { [Key] public int GenreId { get; set; } public string Name { get; set; } public virtual ICollection Artist { get; set; […]

如何更改架构名称

我正在开发一个使用EF 4.1 Code First的ASP.NET MVC应用程序。 我必须将默认架构名称(dbo)更改为其他名称。 我试过这个: public string SchemaName; public void MyContext() { SchemaName = GetSchemaName(); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().ToTable(“TB_ACC_HOLDERS”, SchemaName); } 但它不起作用。 当我获得我的Context的新实例并调用我的一些表时……生成的查询仍然带有“dbo”模式名称。 有人有想法解决这个问题吗?

EntityFramework匿名复合键属性名称冲突

我正在使用EntityFramework 5(或.Net Framework 4.0的4.3) 在我的DbContext对象中,我已经设置了正确的DbSet,并且对象包含彼此正确的引用。 这对我来说并不新鲜,而且事情进展顺利。 现在在这种情况下,我有一些复合键,有时包括表的外键(在这种情况下是对象)。 为此,我在HasKey()的OnModelCreating方法上使用HasKey()函数。 当这些属性具有不同的名称时,没有问题,但是当这些属性具有相同的名称时,无法进行迁移。 一个例子: protected override void OnModelCreating(DbModelBuilder modelBuilder) { // … modelBuilder.Entity().ToTable(“PatientVisits”); modelBuilder.Entity().HasKey(x => new { x.Patient.Code, x.Code }); // … base.OnModelCreating(modelBuilder); } 正如您在提供的代码中所看到的,对象PatientVisit具有名为Code的属性,但只要与不同的患者重复该属性,就可以重复此属性。 实体Patient还有一个名为Code的键。 匿名类型不能有两个推断同一名称的属性(显而易见)。 典型的解决方案是命名匿名类型的属性,如下所示: protected override void OnModelCreating(DbModelBuilder modelBuilder) { // … modelBuilder.Entity().ToTable(“PatientVisits”); modelBuilder.Entity().HasKey(x => new { PatientCode = x.Patient.Code, VisitCode = x.Code }); // […]

EF Code First实现了接口属性

我有以下型号。 interface IKeywordedEntity { IEntityCollection Keywords { get; } } class Foo : EntityBase, IKeywordedEntity { public virtual IEntityCollection Keywords { get { … } } } class Bar : EntityBase, IKeywordedEntity { public virtual IEntityCollection Keywords { get { … } } } 我想编写一个扩展方法,在OnModelCreating为每个关键字自动处理关键字。 public static void WithKeywords(this EntityTypeConfiguration entityTypeConfiguration) where TEntityType : EntityBase, […]

代码首先导致所需的关系是可选的?

public class Client { public Int32 ClientID { get; set; } public virtual ICollection InquiryManufacturers { get; set; } public virtual ICollection Products { get; set; } public virtual ICollection InquiryRetailers { get; set; } } public class Product { public Int32 ProductID { get; set; } public Int32 ClientID { get; set; } public […]

ICollection上的AsQueryable()是否真的会执行延迟执行?

我正在使用Entity Framework CodeFirst,我使用ICollection作为父子关系 public class Person { public string UserName { get;set} public ICollection Blogs { get; set;} } public class Blog { public int id { get; set; } public string Subject { get; set; } public string Body { get; set; } } 好吧,到目前为止一切正常,但我担心的是,每当我想得到一个人的博客时,我就把它当作 var thePerson = _context.Persons.Where(x => x.UserName = ‘xxx’).SingleOrDefault(); var […]

为什么`DatabaseGenerated(DatabaseGeneratedOption.Identity)`在MVC 4中不起作用

我试图将我的MVC 3项目移动到MVC 4但是当我想移动这个模型时: public class Link { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid ID { get; set; } [DisplayName(“Shorted URL”)] public string SURL { get; set; } [DisplayName(“General Link”)] public string OriginalURL { get; set; } [DisplayName(“Click Count”)] public int ClickCount { get; set; } } public class LinkDBContext : DbContext { public DbSet Links { get; set; […]

entity framework表拆分:不在同一类型层次结构中/没有有效的一对一外键关系

我正在使用Entity Framework 6和Code-First方法,我希望将两个实体放在同一个表中。 我究竟做错了什么? [Table(“Review”)] public class Review { public int Id { get; set; } public PictureInfo PictureInfo { get; set; } public int PictureInfoId { get; set; } } [Table(“Review”)] public class PictureInfo { [Key, ForeignKey(“Review”)] public int ReviewId { get; set; } public Review Review { get; set; } } 我得到的错误:实体类型’PictureInfo’和’Review’不能共享表’Review’,因为它们不在同一类型层次结构中,或者没有有效的一对一外键关系,它们之间具有匹配的主键。 我究竟做错了什么?

SaveChanges()之前新添加的实体的ID

我正在向我的数据库添加一个实体,如下所示: public TEntity Add(TEntity entity) { return (TEntity)_database.Set().Add(entity); } 但是, DbSet.Add方法没有返回带有Id等的新添加的实体,它只是将我传入的对象返回到我的Add方法。 它是否应该将包括Id的完整新实体传回给我,或者在调用SaveChanges()之前是否无法获取Id ?