Entity framework 4 如何使用实体框架CTP4 POCO注释将外键映射到现有数据库

Entity framework 4 如何使用实体框架CTP4 POCO注释将外键映射到现有数据库,entity-framework-4,Entity Framework 4,我有一个现有的数据库,在两个表之间有一个非常简单的单向外键关系。我需要创建带有映射的类,这些映射将与现有数据库一起工作 CREATE TABLE OfflinePackage ( PackageID int, Name nvarchar(100) ... CREATE TABLE OfflinePackageDocument ( PackageDocumentID int, PackageID int, --- FK referen

我有一个现有的数据库,在两个表之间有一个非常简单的单向外键关系。我需要创建带有映射的类,这些映射将与现有数据库一起工作

CREATE TABLE OfflinePackage (
      PackageID int,
      Name nvarchar(100)
      ...

CREATE TABLE OfflinePackageDocument (
      PackageDocumentID int,
      PackageID int,  --- FK references OfflinePackage.PackageID
      ...
我为每个表定义了一个类。我想使用注释(如果必须的话,也可以使用fluent api) 将外键OfflinePackageDocument.PackageID映射到OfflinePackageId的步骤

我正在尝试使用RelatedTo注释:

public class OfflinePackageDocument
{
      [Key, StoreGenerated(StoreGeneratedPattern.Identity)]
      public int PackageDocumentID { get; set; }

      [RelatedTo(Property = "PackageID")]
      public virtual OfflinePackage Package { get; set; }

      ...

}

public class OfflinePackage
{
    [Key, StoreGenerated(StoreGeneratedPattern.Identity)]
    public int PackageID { get; set; }

    ...
}
但我在ModelBuilder.CreateModel()期间遇到此错误:

RelatedToAttribute指定的导航属性“PackageID”。在相关类型“OfflinePackage”上找不到属性值

PackageID当然是OfflinePackage中的一个属性


我不知道我在这里做错了什么。

我知道了如何让它工作

首先,OfflinePackageDocument类中必须有PackageID int属性(该属性直接映射到表中的外键)。然后,您可以添加“virtual OfflinePackage”导航属性,将新添加的PackageID指示为外键

public class OfflinePackageDocument
{
    [Key, StoreGenerated(StoreGeneratedPattern.Identity)]
    public int PackageDocumentID { get; set; }

    public int PackageID { get; set; } // This must exist - maps directly to the DB field

    [RelatedTo(ForeignKey = "PackageID")]
    public virtual OfflinePackage Package { get; set; } // Now we can define this navigation property

    ....
}

谢谢,我只是在搞砸我的头。我在映射回同一对象的多个外键上得到了重复的列。。。例如CreatedBy,ModifiedBy映射回用户对象,每个对象给我2列。这把它修好了