我在代码优先方法中有DBContext
。它将接受连接字符串作为参数。
我可以根据User提供的连接字符串忽略外键约束吗?
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.
答案 0 :(得分:2)
我可以根据User提供的连接字符串忽略外键约束吗?
没有。外键约束是数据库中模式设计的一部分。将对所有用户强制执行(或不执行)约束。
在SQL Server中,有几种情况会忽略约束。如果将约束标记为NOT FOR REPLICATION,则允许复制代理绕过约束。如果您使用批量API加载数据,您可以选择跳过约束检查。
除此之外,您可以禁用所有约束,加载数据,然后重新启用它们。或者,您可以使用触发器来强制执行参照完整性,并对触发器进行编码以在某些条件下跳过检查。