如何将MVC模型类与现有数据库表和模式进行匹配

时间:2014-06-21 16:52:08

标签: asp.net-mvc asp.net-mvc-4

我正在使用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; }
    }
}

1 个答案:

答案 0 :(得分:1)

dbo是默认的数据库架构。如果要在人员模式中创建表,则必须添加属性

[表格(&#34; Person&#34;,Schema =&#34; Person&#34;)]