Entity Framework 4.1: ограничения имени - PullRequest
2 голосов
/ 12 декабря 2011

Мы работаем с сущностью 4.1 - сначала кодируем.Мы должны иметь возможность называть наши ограничения и не иметь их имена, автоматически сгенерированные SQL Server.Возможно ли это?

Нам нужно: PK_Users_UserId, а не: PK_Users_87329729C

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

Короткий ответ - нет. Более длинный ответ сначала о значении кода. Code-first означает, что вы не заинтересованы в базе данных - вы просто позволяете EF создавать ее, и это все, что вам нужно. Он позволяет вам определять имена для таблиц и столбцов (это особенно полезно при работе с существующими базами данных), но это все.

Если вам нужно работать с базой данных на таком уровне, вам нужен подход, основанный на базе данных. Злоупотребление кодом, первым назвавшим ограничения, возможно, но это ужасно сложно и сложно (для этого нужно удалить старые ограничения после создания и создать новые - например, здесь ).

1 голос
/ 13 декабря 2011

Не могли бы вы запустить какой-нибудь raw sql, чтобы переименовать их после создания?Возможно, вам придется отключить соглашение EdmMetadata.

context.Database.ExecuteSqlCommand(
  @"DECLARE @pk sysname
    SELECT @pk = name FROM sysobjects WHERE parent_obj = object_id('users') and xtype = 'pk'
    EXEC sp_rename @pk, 'pk_users_UserId'
");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...