我正在尝试使用代码优先的实体框架建立一对多关系(我认为)。
我有一个ProductListing
对象,可以有许多关联的Country
对象。我以为我已经正确设置了它,但我的Countries
表有ProductListing
的参考列。这是一个问题,因为虽然ProductListing
可能与Country
有关系,但Country
对象不应该知道或依赖于ProductListing
对象。
ProductListing
public class ProductListing : AuditedEntity<long>
{
public long ProductId { get; set; }
public Product Product { get; set; }
public long RetailerId { get; set; }
public Retailers.Retailer Retailer { get; set; }
public ICollection<Countries.Country> Countries { get; set; }
public bool IsOfficial { get; set; }
public decimal CurrentPrice { get; set; }
public decimal PreviousPrice { get; set; }
public string ListingUrl { get; set; }
public string AffiliateString { get; set; }
public DateTime? ReleaseDate { get; set; }
public DateTime? ShipDate { get; set; }
public DateTime? ExpiresDate { get; set; }
}
国家
public class Country : AuditedEntity<long>
{
[Required]
[StringLength(ShylockConsts.MaxNameLength)]
public virtual string Name { get; set; }
[Required]
[StringLength(ShylockConsts.MaxIsoLength)]
public virtual string IsoCode { get; set; }
}
答案 0 :(得分:1)
您实际拥有的是public class ProductCountry
{
[Required]
public virtual long ProductID { get; set; }
[Required]
public virtual long CountryID { get; set; }
}
关系,其中产品可以包含多个国家/地区,而国家/地区可以包含多个产品。
要对此进行建模,您需要一个中间连接表来保存每个产品的国家/地区。
例如
delegated
答案 1 :(得分:1)
将一个集合nav属性添加到Country
实体,以模拟多对多关系,如@Steve所说(但不需要在概念模型中为联结表创建实体)
public class ProductList : ...
{
public ICollection<Country> Countries { get; set; }
}
public class Country : ...
{
public ICollection<ProductListing> ProductListings { get; set; }
}