我想在mycommerce
引擎中添加一个新表;
关系
[Product] 1..* [Awards]
代码文件:
public partial class Awards : BaseEntity, ILocalizedEntity
{
public virtual Product Product { get; set; }
public string AwardDescription { get; set; }
public Guid AwardGUID { get; set; }
public int Product_Id { get; set; }
}
public partial class AwardsMap : EntityTypeConfiguration<Awards>
{
public AwardsMap()
{
this.ToTable("Awards");
this.HasKey(p => p.Id);
this.Property(p => p.AwardGUID).IsOptional();
this.Property(p => p.AwardDescription).IsOptional();
this.HasRequired(p => p.Product)
.WithMany(pt => pt.ProductAwards)
.Map(m => m.ToTable("Awards"));
}
}
public partial interface IAwardsService
{
void DeleteAwards(Awards Awards);
IList<Awards> GetAllAwardss();
Awards GetAwardsById(int AwardsId);
void InsertAwards(Awards Awards);
void UpdateAwards(Awards Awards);
}
以及实现AwardsService.cs
接口的IAwardsService
类(与ProductTagService.cs
相同的方式)
Product.cs
代码段:
private ICollection<Awards> _awards;
public virtual ICollection<Awards> ProductAwards
{
get { return _awards ?? (_awards = new List<Awards>()); }
protected set { _awards = value; }
}
但每次我从数据库加载产品并尝试加载ProductAwards proparte时我都会收到错误
Invalid column name 'Product_Id1'.
Invalid column name 'Product_Id1'.
发生了什么事?
我看到了Customer, CustomerAddress, Address
表,我修改了我的类看起来和那些类似,现在它正在工作。
答案 0 :(得分:1)
请检查映射表是否与您班级中定义的列名完全相同。
此处看起来像冲突,因为它的投掷错误无效列名称“Product_Id1
”和您班级中的属性名称为Product_Id
。
答案 1 :(得分:1)
在AwardsMap中:
替换它:
this.HasRequired(p => p.Product)
.WithMany(pt => pt.ProductAwards)
.Map(m => m.ToTable("Awards"));
用这个:
this.HasRequired(p => p.Product)
.WithMany(pt => pt.ProductAwards)
.HasForeignKey(p => p.Product_Id);