问题
I'm using EF4 CTP5 code first approach but am having trouble getting it to work. I have a class called "Company" and a database table called "CompanyTable". I want to map the Company class to the CompanyTable table, so have code like this:
[Table(Name = "CompanyTable")]
public class Company
{
[Key]
[Column(Name = "CompanyIdNumber", DbType = "int")]
public int CompanyNumber { get; set; }
[Column(Name = "CompanyName", DbType = "varchar")]
public string CompanyName { get; set; }
}
I then call it like so:
var db = new Users();
var companies = (from c in db.Companies
select c).ToList();
However it errors out:
Invalid object name 'dbo.Companies'.
It's obviously not respecting the Table attribute on the class, even though it says here that Table attribute is supported. Also it's pluralizing the name it's searching for (Companies instead of Company.) How do I map the class to the table name?
回答1:
on you class that inherits from DbContext, override the OnModelCreating method
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Company>().ToTable("dbo.CompanyTable");
}
回答2:
Forgot to add a reference to the ctp5 dll to my schemas project, it was using System.Data.Linq.Mapping instead.
来源:https://stackoverflow.com/questions/4493819/ef4-ctp5-code-first-approach-ignores-table-attributes