Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
C# SQL数据库、实体数据模型和1对1实体_C#_Sql Server 2005_Entity Framework_Cardinality - Fatal编程技术网

C# SQL数据库、实体数据模型和1对1实体

C# SQL数据库、实体数据模型和1对1实体,c#,sql-server-2005,entity-framework,cardinality,C#,Sql Server 2005,Entity Framework,Cardinality,我是EDMs的新手,以前写过很多ADO.Net的东西。我有三张桌子: **Product:** Prod_ID - PK **Product_MaxLoan** Prod_ID - PK **Product_MinLoan** Prod_ID - PK 这些表托管在MS SQL 2005中,尚未配置FK或约束,它们将具有名义上的1对1关系。例如,ID为1的产品的每一行,在Product_MaxLoan和Product_MinLoan中都会有一行ID为1 在VisualStudio2010中

我是EDMs的新手,以前写过很多ADO.Net的东西。我有三张桌子:

**Product:**
Prod_ID - PK

**Product_MaxLoan**
Prod_ID - PK

**Product_MinLoan**
Prod_ID - PK
这些表托管在MS SQL 2005中,尚未配置FK或约束,它们将具有名义上的1对1关系。例如,ID为1的产品的每一行,在Product_MaxLoan和Product_MinLoan中都会有一行ID为1

在VisualStudio2010中,我希望正确设置EDM,以便将基数设置为1:1。我以前对表和下面的设置有FK约束,但是,我认为这只允许0..1基数,因为一个产品可能没有Product\u MaxLoan或Product\u MinLoan

**Product:**
Prod_ID - PK

**Product_MaxLoan**
ID - PK
Prod_ID - FK

**Product_MinLoan**
ID - PK
Prod_ID - FK
问题:

对于在SQL2005中设置这些表,您有什么建议?对于EDM中的1对1关系,您会设置FKs吗? 您能否在SQL 2005中设置EDM从数据库导入时将读取的PK关系? 一个产品包含大约300个属性,因此包含所有这些属性 因此,单个表中的数据的数据库规范性较差 许多1-1表。最好的做法是把所有这些 属性合并到单个EDM类中?我的本能反应是打破它 这是我的ADO传统 走到前面,为每个逻辑部分都有一个类 产品 如蒙指教,不胜感激

致以最良好的祝愿


在数据库中标记使用此配置:

**Product:**
Prod_ID - PK

**Product_MaxLoan**
Prod_ID - PK, FK (to Product)

**Product_MinLoan**
Prod_ID - PK, FK (to Product)

这将在数据库级别以及EF中强制执行一对一关系。关系本身将是1-0..1产品可以在没有MaxLoan和MinLoan的情况下存在,因为数据库中不能存在真正的1:1。Real 1:1要求两个实体始终存在=如果第二个实体不存在,则无法插入第一个实体;如果第一个实体不存在,则无法插入第二个实体。如何在不关闭引用完整性的情况下插入它们?

你好,Ladislav,谢谢你的建议,这非常有意义。从EDM的角度来看,您是否建议我在一个类中拥有所有300个属性?或者把它分成更小的类?再次感谢。做记号