在数据库第一实体框架模型中创建不存在的关联?

时间:2015-12-15 00:19:28

标签: sql-server entity-framework foreign-keys

我有一个没有任何FK的数据库中的实体模型,在我的模型中,我想在表示关联的列之间添加一个关联。有没有办法在不必在DataBase上创建FK的情况下做到这一点? (我没有任何权限在数据库上创建FK。)

示例:

TableA
- id (PK)
- idB
- someParam

TableB
- idB (PK)
- someParam2
- someParam3

1 个答案:

答案 0 :(得分:0)

只需在实体框架中手动定义FK,在数据库中没有真正的外键我可以想象如果数据库很大,查询将会非常慢。 映射可以是这样的:

public class A
{
[Key]
[Required]
public int id {get; set;}

[ForeignKey("tableB")]
public int idB {get; set;}

public virtual TableB tableB {get; set;}
}

或者您可以使用流畅的映射(在我看来更好):

            modelBuilder.Entity<TableB>()
            .HasRequired(e => e.TableA)
            .WithOptional(e => e.TableB)
            .HasForeignKey(e => e.idB);

这只是一个例子,因为我不知道tableA和tableB之间的具体关系(一对一可选,一对多...)

我可以通过这种方法看到的另一个问题是插入/删除/更新实体。因为没有真正的外键存在,所以在调用SaveChanges()时,您必须注意不要在tableB中插入重复记录。 一篇关于它的好文章:https://msdn.microsoft.com/en-us/magazine/hh708747.aspx