Сначала код Entity Framework и аннотации к данным

#entity-framework

#entity-framework

Вопрос:

Я использую подход code first в своем проекте. В проекте у меня есть классы с атрибутом MetadataType, который я не использую в своей модели EF. Класс с метаданными имеет несколько постоянных общедоступных полей (в дополнение к полям основного типа). Теперь, когда я попытался запросить EF, он выдал исключение, что в классе метаданных поля не сопоставлены… подробнее см. Ниже

 class M1 
{
    int Id;
    string Name
}

class M2 
{
    int Id;
    DateTime Date
}

[MetadataType(typeof(PageOFSRevenueMetadata))]
class NotRelatedToModel
{
    int Prop1;
    int Prop2;
}

class PageOFSRevenueMetadata
{
    public const string RuleSet1 = "r1";
    public const string RuleSet2 = "r2";

    // Data Vaidation Attrs...
    int Prop1;
    int Prop2;

}
  

В моем контексте у меня есть отображение только для M1 и M2. В БД существует таблица с именем ‘NotRelatedToModel’, но я не хочу использовать ее в своей модели. Я использую EF 6

Теперь, когда я пытаюсь выполнить запрос соединения для M1 и M2, он выдает исключение ниже

‘NotRelatedToModel’ содержит следующие неизвестные свойства или поля: RuleSet1, RuleSet2. Пожалуйста, убедитесь, что имена этих членов совпадают с именами свойств в основном типе

Я могу переместить эти статические поля в другое место, и, похоже, это работает, но я хотел бы знать, почему это произошло? Как работает отображение EF code first?

Заранее спасибо

Комментарии:

1. Есть ли какое-либо свойство типа NotRelatedToModel в ваших сопоставленных классах?

2. Нет, их нет, фактически история следующая: у меня есть основная сборка с подходом, ориентированным на базу данных, я создал другую сборку (плагин), в которой я создал контекст code first. В этом плагине я должен использовать основную (DB first) модель и мой плагин enity, но они не пересекаются. P.S. Code first не обновляется DB (я обновил его вручную с помощью скриптов) Мне просто нравится гибкость кода в первую очередь