是否可以在Linq2SQL中创建一对零或一对一关系?
我的理解是,要创建一对一关系,您需要在每个表的PK上创建一个FK关系。
但是你不能让PK为空,所以我不知道如何让一对零或一对一的关系工作?
我正在使用设计器自动创建模型-所以我想知道如何设置SQL表来归纳关系-而不是一些自定义的ORM代码。
发布于 2009-12-17 21:35:01
你部分地correct...but了你混合的东西。
不能将主键字段设为空。这部分是正确的。但是保持1 -> 0或1关系的对象上的外键字段可以为空。
在LINQ to SQL中,one -> 0或one关系将只是一个引用另一个LINQ to SQL类但允许为空的字段。
示例表
create table Child (
id int identity(1,1),
name varchar(max),
primary key (id))
create table Parent (
id int identity(1,1),
childId int,
name varchar(max),
primary key (id),
foreign key (childId) references Child(id))
使用这些表,您应该获得一个从父级到子级的1 -> 0或1,以及一个从子级返回到父级的1 -> have (一个子级可以有多个父级)。
发布于 2009-12-17 21:49:24
如果你想要Z基数,试试这样的:
CREATE TABLE parent (id INTEGER NOT NULL PRIMARY KEY);
CREATE TABLE child (id INTEGER NOT NULL PRIMARY KEY REFERENCES parent (id));
您正在两个表之间创建一个公共主键。如果父级中不存在主键,您将无法在子级中插入行。
SELECT p.*, c.* FROM parent p LEFT JOIN child c ON c.id=p.id
对于不存在任何关系的c.*,将返回NULL。
https://stackoverflow.com/questions/1921788
复制相似问题