0

私は最初にEFコードを初めて使用し、エンティティをマッピングするために手動で作成した特定の関係テーブルをICollectionナビゲーションプロパティに使用させようとしています。

私がそれをしなければならない理由は、すべてのテーブルに TenantId 列があるからです。これはどういうわけか可能ですか?

[Table("Tenants")]
public class Tenant
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    // This should use ContactAddressesForTenants table
    public virtual ICollection<Address> ContactAddresses {get; set;}

}

[Table("BusinessProfiles")]
public class BusinessProfile
{
    [Key, ForeignKey("Tenant")]
    public int TenantId { get; set; }

    public virtual Tenant Tenant { get; set; }

    // This should use the AddressesForBusinessProfiles table
    public virtual ICollection<Address> ProfileAddresses { get; set; }
}

[Table("Addresses")]
public class Address
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [ForeignKey("Tenant")]
    public int TenantId { get; set; }
}

[Table("ContactAddressesForTenants")]
public class ContactAddressForTenant
{
    [ForeignKey("Tenant")]
    public int TenantId { get; set; }

    [ForeignKey("Address")]
    public int AddressId { get; set; }

    public virtual Tenant Tenant { get; set; }

    public virtual Address Address {get; set;}
}

[Table("AddressesForBusinessProfiles")]
public class AddressForBusinessProfile
{
    [ForeignKey("BusinessProfile")]
    public int TenantId { get; set; }

    [ForeignKey("Address")]
    public int AddressId { get; set; }

    public virtual BusinessProfile BusinessProfile { get; set; }

    public virtual Address Address { get; set; }
}
4

1 に答える 1

0

私があなたを正しく理解しているなら。モデルでこれを変更してみてください。

どこですか:

// This should use ContactAddressesForTenants table
public virtual ICollection<Address> ContactAddresses {get; set;}
// This should use the AddressesForBusinessProfiles table
public virtual ICollection<Address> ProfileAddresses { get; set; }

への変更:

public virtual ICollection<ContactAddressForTenant> ContactAddresses {get; set;}
public virtual ICollection<AddressForBusinessProfile> ProfileAddresses { get; set; }
于 2013-02-19T23:30:40.697 に答える