Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何首先使用代码映射代理键_Entity Framework_Code First - Fatal编程技术网

Entity framework 如何首先使用代码映射代理键

Entity framework 如何首先使用代码映射代理键,entity-framework,code-first,Entity Framework,Code First,我有带主键的旧表。这些表还具有用于将一个表与另一个表关联的代理键。我想映射Membership.User表(使用Guid PK),但有一个属性用户名,该用户名保存代理项键,代理项键将其与DepoMembers表关联。DepoMembers有一个数字PK,但有一个代理密钥用户名。用户名保证是唯一的 在Linq2SQL中-为了在设计器中关联这些表-我们添加了一个关联,其中User.UserName链接到DepoMembers.UserName-并将关联的多重性设置为1:1。然后将导航名称修改为单数

我有带主键的旧表。这些表还具有用于将一个表与另一个表关联的代理键。我想映射Membership.User表(使用Guid PK),但有一个属性用户名,该用户名保存代理项键,代理项键将其与DepoMembers表关联。DepoMembers有一个数字PK,但有一个代理密钥用户名。用户名保证是唯一的

在Linq2SQL中-为了在设计器中关联这些表-我们添加了一个关联,其中User.UserName链接到DepoMembers.UserName-并将关联的多重性设置为1:1。然后将导航名称修改为单数

如果我们将DepoMembers作为关系的主要端,那么如果Membership.User不存在(例如,用户不管理应用程序站点,但存在于DepoMembers中),则导航属性User将为Null

如何在代码中首先做到这一点

到目前为止,我提出的唯一替代方法是创建一个属性DepoMembers.User,它使用UserName属性使用datacontext检索用户


Ren

我认为您不能,因为entity framework不支持非主键列的导航属性。您真正拥有的另一个选择是让Entity Framework将代理项键视为主键,并且只让Guid值成为同样唯一的常规列。我不确定我是否推荐这种方法……不幸的是,EF可能不是您使用的最佳选择。