Платформа сущностей .Net Игнорировать ограничения, основанные на ConnectionString - PullRequest
0 голосов
/ 03 мая 2018

У меня есть DBContext в коде первого подхода. Он примет строку подключения в качестве параметра.

Можно ли игнорировать ограничения внешнего ключа на основе строки подключения, предоставленной пользователем?

public class EFDbContext : DbContext{
     public EFDbContext(string connection="Default"):base(connection)
     {
     }
     public DbSet<Contact> Contact { get; set; }
}

Мой Contact класс выглядит так:

public class Contact
{     
    [Key]
    public long ContactId { get; set; }


    //Foreign key to Contact
    [ForeignKey("SystemUsers")] //**Need to ignore this constaint If DB is NoRelationsDB**
    public Guid UserId { get; set; }
    public virtual SystemUsers SystemUsers { get; set; }
}

Я использую сущность:

 EFDbContext context=new EFDbContext();
 EFDbContext context1=new EFDbContext("NoRelationsDB"); //If the connection string is this then we have to ignore all the constraints in Tables.

1 Ответ

0 голосов
/ 03 мая 2018

Можно ли игнорировать ограничения внешнего ключа на основе строки подключения, предоставленной пользователем?

Нет. Ограничения внешнего ключа являются частью дизайна схемы в базе данных. Ограничения будут применены (или нет) для всех пользователей.

В SQL Server есть несколько сценариев, в которых ограничения игнорируются. Если вы пометите ограничение как NOT FOR REPLICATION, агентам репликации будет разрешено обойти ограничения. А если вы загружаете данные с помощью массового API, вы можете при желании пропустить проверку ограничений.

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

...