Sql server 基本SQL/实体框架1到0..1实体模型问题

Sql server 基本SQL/实体框架1到0..1实体模型问题,sql-server,entity-framework,Sql Server,Entity Framework,在我的数据库中有两个表A和B A有列ID、标题和B_ID。B_ID允许为空。 B有ID列和SomeText列 两者中的ID都是主键标识 A在B_ID上也有一个唯一的索引 这似乎是一种基本的方式,可以说a可以有0或1b行与之关联,而每个B都正好与1a关联。到目前为止,这是正确的吗 当我创建该数据库的ADO.NET实体框架实体模型时,A有一个指向B的导航属性,其多重性为0..1。这是有道理的 实体B具有指向a的导航属性,但其上的多重性为*(多个) 我想我的数据库定义不会让一个B与多个A相关联,所以这

在我的数据库中有两个表A和B

A有列ID、标题和B_ID。B_ID允许为空。 B有ID列和SomeText列 两者中的ID都是主键标识 A在B_ID上也有一个唯一的索引

这似乎是一种基本的方式,可以说a可以有0或1b行与之关联,而每个B都正好与1a关联。到目前为止,这是正确的吗

当我创建该数据库的ADO.NET实体框架实体模型时,A有一个指向B的导航属性,其多重性为0..1。这是有道理的

实体B具有指向a的导航属性,但其上的多重性为*(多个)


我想我的数据库定义不会让一个B与多个A相关联,所以这可能不是问题,但有没有办法定义数据库和/或修改实体模型,使从B到A的导航属性的多重数为1?

我不完全理解您的实体设置,但是,如果B的主键同时包含ID值和任何其他字段,或者根本没有主键关系,则实体框架显示的关系是正确的。您可能会仔细检查您的模式,以确保一切都按照您认为的方式配置

要使从B到a的多重数为1,您需要在B中有一个主键,该主键仅是用作a中外键的ID值


如果我对您的实体布局的解释不正确,请澄清您的问题,我将尽力提供进一步帮助。

谢谢mwigdahl,答案实际上在数据库定义中

我更改了表定义。 表A包含列ID、B_ID和标题 表B有A\u ID列和SomeText列

ID是表A的主键 A_ID是表B的主键 表A中的B_ID是表B中A_ID列的外键引用


当我根据db定义创建实体框架模型时,我得到了A和B之间预期的1到0..1关系。

听起来你应该在A的表中省略B的Id(与A的Id相同吗??)你在做这样的事情吗

CREATE TABLE dbo.People(PersonId int NOT NULL, Name varchar(50) NOT NULL)
CREATE TABLE dbo.BioData(PersonId int NOT NULL, ExtraInfo varchar(255) NOT NULL)

是的,这个模式对我的问题没有意义,我现在明白了。我需要回去找一个更好的方案。太好了,很高兴我能帮上忙!