在按照将现有表映射到模型的步骤之后,我意识到该表有一些依赖关系。
在过去的三次帮助中,我只是将整个DBContext下载并重新开始。
我想更新我的上下文以容纳另一个与当前表相关的表。
我目前的背景是:
public partial class CompanyContext : DbContext
{
public CompanyContext() : base("name=CompanyContext")
{
}
public virtual DbSet<company> companies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<company>()
.Property(e => e.name)
.IsUnicode(false);
modelBuilder.Entity<company>()
.Property(e => e.symbol)
.IsUnicode(false);
modelBuilder.Entity<company>()
.Property(e => e.address)
.IsUnicode(false);
modelBuilder.Entity<company>()
.Property(e => e.zipcode)
.IsFixedLength()
.IsUnicode(false);
modelBuilder.Entity<company>()
.Property(e => e.cnpj)
.IsFixedLength()
.IsUnicode(false);
}
}
公司的记录id_city
甚至没有出现在DbContext
中。但它在模型中存在:
[Table("company")]
public partial class company
{
public int id { get; set; }
[Required]
[StringLength(70)]
public string name { get; set; }
[StringLength(10)]
public string symbol { get; set; }
[StringLength(80)]
public string address { get; set; }
[StringLength(8)]
public string zipcode { get; set; }
public int id_city { get; set; }
public int id_segment { get; set; }
[StringLength(14)]
public string cnpj { get; set; }
[Column(TypeName = "date")]
public DateTime? open_date { get; set; }
}
我想将表cities
添加到此上下文中,我该怎么办?有没有帮助它的巫师?
我认为这可能只是添加:
public virtual DbSet<city> cities { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<city>()
.Property(e => e.name)
.IsUnicode(false);
}
但它不起作用。
答案 0 :(得分:1)
添加
等属性public virtual DbSet<company> companies { get; set; }
上下文告诉EF你有一个表将保存company
类型的记录。这一行就足够了,表格将使用标准映射,因此表格名称为companies
。
你需要为城市做同样的事情。
public virtual DbSet<city> cities { get; set; }
如果要在数据库中建立关系并删除City
字段,还需要将虚拟属性id_city
添加到公司类。如果您希望在company
类上明确公开相关城市的ID,则必须使用EF遵循的命名约定,即将其命名为cityId
或为其添加流畅的映射。