2013-04-13 3 views
2

Я немного смущен тем, как правильно настроить мою модель. Ниже вы увидите мои POCOs, и мне интересно, как я могу автоматически увеличивать идентификаторы, и если необходимо установить аннотацию данных [Key]. Существует ли какое-либо соглашение о присвоении имен, которое заставляет EF распознавать ID/первичный ключ или мне нужно использовать аннотацию данных [Key]?Как правильно настроить модель, класс POCO?

Также необходимо установить аннотацию данных [Key] в дочернем объекте?

public class User 
{ 
    [Key] 
    public int UserId { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 
    public string Email { get; set; } 
    public DateTime Reg { get; set; } 
    public virtual ICollection<Stats> Stats { get; set; } 
} 

public class Stats 
{ 
    [Key] 
    public int StatId { get; set; } 
    public string Age { get; set; } 
    public string Height { get; set; } 
    public string Weight { get; set; } 
    public bool Sex { get; set; } 
} 

public class BodylogContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 
    public DbSet<Stats> Stats { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     Database.SetInitializer<BodylogContext>(null); 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 
} 

ответ

0

Я просто получаю с MVC тоже, и я обнаружил, что this учебника ответил на большинство вопросов, которые вы просили.

По умолчанию Entity Framework интерпретирует свойство с именем ID или идентификатором classIDID как первичный ключ. Поэтому в вашем классе User вам не нужен атрибут [Key] в свойстве UserId. В вашем классе Stats свойство не совпадает с именем класса (у вас есть множественное имя), поэтому здесь вам понадобится атрибут.

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

1

Вы должны посмотреть Entity Framework Code First учебники для более подробной информации.

В частности, в вашем случае и несколько основных правил (оговорке :) Я не пытаюсь охватить все всего несколько основных из них ....

  • Вы можете удалить [Key] -
    если вы используете <Entity>Id - или просто Id он сделан в ПК по умолчанию.
    То же самое относится к «FK-s» и связанным с ним navigation properties (за исключением того, что <Property>Id также отображается по соглашению),
    Это нечувствительный к регистру.

  • Идентичность по умолчанию - для рк типов, имеет смысл - INT, долго ... - не для строк,

  • Если у вас есть more than one рк - тогда вам нужно «украсить» его Ключ - или в беглой конфигурации,

и т.д ...

Примечания: вы можете настроить и удалить conventions из беглой конфигурации.
Также из EF6 вы сможете определить новые для своего кода.

Моя рекомендация: Включите Migrations и посмотреть код миграции сценария (.cs файл) создается файл. Он всегда имеет четкое описание того, что такое ключи, индексы и т. Д. Лучший способ узнать, как фактически создается Db .

+0

Спасибо, что я нашел это действительно полезным, оцените ваш ответ. – brk

Смежные вопросы