Comments 4
Спасибо
Также благодарю за пост.
Было бы очень удобно еще создать атрибуты для свойств модели и генерировать нужный код в миграцию автоматически.Например:
Было бы очень удобно еще создать атрибуты для свойств модели и генерировать нужный код в миграцию автоматически.Например:
public class Model{
[ClusteredKey("ClusteredKeyName")]
public int ModelID { get; set; }
[Key("KeyName",KeyType.Asc)]
public string Field1 { get; set; }
.....
}
В EF 6.1 был добавлен атрибут IndexAttrubute, который делает то, о чем вы просите.
Если вдаться в детали, то это работает через добавление
Далее, на базе аннотаций EF определяет получившийся набор изменений и на базе этого набора генерируется код миграции.
Если мы хотим, чтобы генерировался код, для нашей пользовательской миграции, то здесь есть проблема. Она заключается в том, что генерация списка операций, которые необходимо добавить в миграцию происходит в классе
В принципе, можно попытаться обойти это добавив собственный класс аннотаций и как-то попробовать их вычитывать в собственной реализации генератора кода
Если вдаться в детали, то это работает через добавление
IndexAnnotation
через IndexAttributeConvention
, т.е. проходим по классу, находим атрибуты IndexAttribute
и добавляем в соответствующие свойства необходимые аннотации (кстати, добавление атрибутов через Code First выглядит именно так).Далее, на базе аннотаций EF определяет получившийся набор изменений и на базе этого набора генерируется код миграции.
Если мы хотим, чтобы генерировался код, для нашей пользовательской миграции, то здесь есть проблема. Она заключается в том, что генерация списка операций, которые необходимо добавить в миграцию происходит в классе
System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer
, который является внутренним и изменить его нельзя (надеюсь в одном из следующих релизов EF и это изменят).В принципе, можно попытаться обойти это добавив собственный класс аннотаций и как-то попробовать их вычитывать в собственной реализации генератора кода
CSharpMigrationCodeGenerator
и потом подключить его в настройках миграций, но это необходимо проверять.Sign up to leave a comment.
Создание пользовательских миграционных операций в Entity Framework 6