EF Code First:使用不同的键定义一对多关系

时间:2011-08-03 21:29:37

标签: entity-framework-4.1

我无法在EF4.1中定义2个实体之间的一对多或多个关系。

以下是我的对象模型:

public class SubmittedTransaction
{
    public int Batch_ID { get; set; }
    public Int64 Batch_Detail_ID { get; set; }
    public string Company_ID { get; set; }

    public virtual ICollection<SubmittedSplitTransaction> Splits { get; set; }
}

使用fluent API,上面的对象有一个复合PK,定义为Batch_ID和Batch_Detail_ID。

public class SubmittedSplitTransaction
{
    public Int64 Batch_Detail_ID { get; set; }
    public string Company_ID { get; set; }
    public decimal Sales_Amount { get; set; }
    public decimal Revenue_Amount { get; set; }
}

使用fluent API,将上述对象定义为复合PK,定义为Batch_Detail_ID和Company_ID。

这将映射到现有数据库(TPT)。

这里的基本思想是SubmittedTransaction可以有多个与之关联的SubmittedSplitTransactions。导航实际上只需要一种方式,从SubmittedTransaction到SubmittedSplitTransaction。

我的DBContext类(OnModelCreating重写)或我的映射类中需要什么才能从SubmittedTransaction到SubmittedSplitTransaction发生延迟加载?

非常感谢任何帮助!!!

[编辑]

我接受了你的建议,做了以下修改:

public class SubmittedSplitTransaction
{
    public Int64 Batch_Detail_ID { get; set; }
    public string Company_ID { get; set; }
    public decimal Sales_Amount { get; set; }
    public decimal Revenue_Amount { get; set; }

    public virtual SubmittedTransaction SubmittedTransaction { get; set; }
}

在我的DBContext类中,我将以下内容添加到OnModelCreating覆盖中:

modelBuilder.Entity<SubmittedTransaction>().HasMany(s => s.Splits).WithRequired().Map(m => m.MapKey("Batch_Detail_ID"));

我必须在这里遗漏一些东西,因为我现在正在抛出以下异常:

The specified association foreign key columns 'Batch_Detail_ID' are invalid. The number of columns specified must match the number of primary key columns.

SubmittedTransaction具有Batch_ID和Batch_Detail_ID的键。它可以有零个,一个或多个SubmittedSplitTransactions,它具有Batch_Detail_ID和Company_ID的键。而不是假设约定来创建这两个对象之间的关系,需要什么配置,因为我上面的内容显然是错误的?

0 个答案:

没有答案