我正在使用Visual Studio 2012,MVC 4和Razor(CSHTML)。我在测试数据库中创建了Person.Person表。我想让我的模型PersonModels.cs使用这个表,所以我创建了以下两个类。
public class Person
{
[Key]
public int BusinessEntityID { get; set; }
public string PersonType { get; set; }
public string Title { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string Suffix { get; set; }
public int EmailPromotion { get; set; }
[XmlAttribute(DataType = "string")]
public string AdditionalContactInfo { get; set; }
[XmlAttribute(DataType = "string")]
public string Demographics { get; set; }
public string rowguid { get; set; }
public DateTime ModifiedDate { get; set; }
}
public class PersonDbContext : DbContext
{
public DbSet<Person> person { get; set; }
}
我认为它会选择Person.Person表,因为类名是Person,即使我没有包含模式。但是,在运行应用程序并执行插入操作时,我检查了Person.Person表,但行没有。它创建了dbo.People表并在那里插入了行!我仔细检查了因为我以为我可能会喝醉但我没有在任何地方写人!
我读到了反向poco,但我想了解它的工作原理,而不是让它工作。
编辑:它有效!请找到我附带的代码:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
namespace client_site.Models
{
[Table("Person", Schema = "Person")]
public class TestModel
{
[Key]
public int ID { get; set; }
}
public class DefaultConnectionX : DbContext
{
public DbSet<TestModel> test { get; set; }
}
}
答案 0 :(得分:1)
dbo是默认的数据库架构。如果要在人员模式中创建表,则必须添加属性
[表格(&#34; Person&#34;,Schema =&#34; Person&#34;)]