Почему не работает моя первая плюрализация кода Entity Framework? - PullRequest
1 голос
/ 19 декабря 2011

Сначала я использую Entity Framework Code.Обычно у меня нет проблем, но для базы данных, с которой я работаю, я получаю ошибки, которые не могут найти таблицу в базе данных SQL Server.Вот как выглядит мой класс:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

public class CustomApp_User
{
    [Key]
    public int UserID { get; set; }
    [MaxLength(50)]
    public string Username { get; set; }
    [MaxLength(250)]
    public string Email { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateModified { get; set; }

}

В базе данных у меня есть таблица с именем "CustomApp_Users", соответствующая приведенному выше.Обратите внимание, что в конце он имеет букву "s".

А затем у меня есть:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

public class CustomAppDB : DbContext
{
    public DbSet<CustomApp_User> CustomApp_Users { get; set; }
}

Я ожидал, что EF codefirst для множественного числа, чтобы он нашел "CustomApp_Users" в базе данных, так как этокак это обычно работает.Но вместо этого я получаю сообщение об ошибке:

Недопустимое имя объекта 'dbo.CustomApp_User'.

Похоже, оно не является множителем имени таблицы.Я не могу понять, почему.Отличие этой базы данных в том, что первичные ключи не соответствуют обычному соглашению, поэтому я использую аннотацию [Key].

Я знаю, что если я буду использовать аннотацию [Table] для своего класса, она будет работать: [Table ("CustomApp_Users")]

Но я бы хотел выяснить, почему плюрализация не работает так, как я думал.

1 Ответ

2 голосов
/ 19 декабря 2011

Это потому, что PluralizationService в EF не может его во множественном числе.Он возвращает ту же строку, если вы передадите ей «CustomApp_User».К сожалению, вы не можете настроить этот сервис.Поэтому вам нужно явно настроить имя таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...