我的Pocos中有两个课程
public class Listing
{
public int ListingId { get; set; }
[ForeignKey("Seller")]
public int SellerId { get; set; }
public virtual User Seller { get; set; }
[Required]
public string ItemCategory { get; set; }
[Required]
public string ItemName { get; set; }
[Required]
public decimal Cost { get; set; }
public DateTime DateOfPublish { get; set; }
[Required]
public bool SaleStatus { get; set; }
[ForeignKey("Buyer")]
public Nullable<int> BuyerId { get; set; }
public virtual User Buyer { get; set; }
}
和
public class User
{
public int UserId { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string SecondName { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Password { get; set; }
public string PhoneNumber { get; set; }
public string Address { get; set; }
public virtual ICollection<Listing> Listings { get; set; }
当我将其迁移到数据库时,我得到了BuyerId,SellerId和User_UserId
User_UserId列完全没必要,但我不知道如何处理我的代码才能将其删除。
答案 0 :(得分:1)
Seller
类中的 Buyer
和Listing
导航属性定义两个多对一关系。但是Listings
类中有单个集合导航属性User
。由于EF不知道它应该映射到哪两个关系,它只是认为它是第三个关系,没有相应的引用导航属性,并且默认为约定FK名称User_UserId
。
您需要将Listings
属性映射到其中一个参考导航属性。一种方法是使用InverseProperty
属性。或者将其替换为两个集合导航属性,并将它们映射到相应的参考导航属性。
很快,替换
public virtual ICollection<Listing> Listings { get; set; }
与
[InverseProperty("Seller")]
public virtual ICollection<Listing> SellerListings { get; set; }
[InverseProperty("Buyer")]
public virtual ICollection<Listing> BuyerListings { get; set; }