C# EF代码中一对多关系的隐式键优先

C# EF代码中一对多关系的隐式键优先,c#,entity-framework,ef-code-first,entity-framework-5,C#,Entity Framework,Ef Code First,Entity Framework 5,我有一个聚合类,它将包含另一个类的集合,但该类将只存在于该聚合上的集合中,因此我在代码中不需要在其上设置ID,也不需要对该聚合进行引用。例如: public class SalesListing { public Guid Id { get; set; } public ICollection<LocalizedDescription> Descriptions { get; set; } } public class LocalizedDescription {

我有一个聚合类,它将包含另一个类的集合,但该类将只存在于该聚合上的集合中,因此我在代码中不需要在其上设置ID,也不需要对该聚合进行引用。例如:

public class SalesListing 
{
    public Guid Id { get; set; }
    public ICollection<LocalizedDescription> Descriptions { get; set; }
}

public class LocalizedDescription
{
    public string CultureCode { get; set; }
    public string Title { get; set; }
}

可以使用以下语法定义复合键:

modelBuilder.Entity<LocDesc>().HasKey(ld => new { ld.CultureCode, ld.Title });

可以使用以下语法定义复合键:

modelBuilder.Entity<LocDesc>().HasKey(ld => new { ld.CultureCode, ld.Title });

不,您仍然需要指定一个ID

不,您仍然需要指定一个ID

“也就是说,我想您会后悔没有定义一个整数主键”-我知道,因此我想告诉它“嘿,LocalizedDescriptions属于SalesListing,所以根据SalesListingId和CultureCode创建一个键”但我在这里试图做到纯粹,不让我的对象与RMDB细节混淆。是的,简单的
。WithRequired()
不起作用-它需要一个外键“也就是说,我想你会后悔没有定义一个整数主键”-我知道,因此我想告诉它“嘿,LocalizedDescriptions属于SalesListing,所以根据SalesListingId和CultureCode创建一个键”但我在这里试图做到纯粹,而不是用RMDB细节来混乱我的对象。是的,简单的
。WithRequired()
不起作用-它需要外键
modelBuilder.Entity<SalesListing>().HasMany( e => e.Descriptions ).WithRequired();
modelBuilder.Entity<SalesListing>().HasMany( e => e.Descriptions ).WithRequired()
    .HasForeignKey( r => r.SalesListingID );