Возможно ли принудительно применить свойства, сгенерированные Entity Framework, для реализации интерфейсов? - PullRequest
1 голос
/ 07 февраля 2009

Пример интерфейса:

public Interface IEntity
     Property ID() as Integer
end Interface

Я хочу, чтобы все мои EF-объекты реализовали этот интерфейс на основных ключах.

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 08 февраля 2009

Это кажется очень простым в CSharp, но в VB вы должны специально указать, какие свойства / функции / подпрограммы реализуют интерфейс:

public Property Id() as Integer Implements IEntity.Id

К сожалению, мне пришлось разорвать файл конструктора и изменить сгенерированные свойства. Я закончил тем, что избавился от Сгенерированного файла все вместе и теперь держу свои Модели в отдельных классах со всеми отображениями Атрибутов.

1 голос
/ 08 февраля 2009

Да, вы можете. Классы, которые создает дизайнер, объявляются частичными. В отдельном исходном файле вы можете объявить дополнительные методы для этих классов. Вы также можете объявить конкретные интерфейсы, которые уже реализованы сгенерированным классом.

/* This is the interface that you want to have implemented. */
public interface ISomething
{
    void DoSomething();
}

/* This would be part of the generated class */
partial class PartialClass
{
    public void DoSomething()
    {
    }
}

/* This would be your own extension */
partial class PartialClass : ISomething
{
}
0 голосов
/ 08 февраля 2009

Классы являются частичными, поэтому это должно быть очень легко сделать.

...