首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linq 2 SQL One to Zero还是One relationship?

Linq 2 SQL One to Zero还是One relationship?
EN

Stack Overflow用户
提问于 2009-12-17 21:28:41
回答 2查看 2.4K关注 0票数 1

是否可以在Linq2SQL中创建一对零或一对一关系?

我的理解是,要创建一对一关系,您需要在每个表的PK上创建一个FK关系。

但是你不能让PK为空,所以我不知道如何让一对零或一对一的关系工作?

我正在使用设计器自动创建模型-所以我想知道如何设置SQL表来归纳关系-而不是一些自定义的ORM代码。

EN

回答 2

Stack Overflow用户

发布于 2009-12-17 21:35:01

你部分地correct...but了你混合的东西。

不能将主键字段设为空。这部分是正确的。但是保持1 -> 0或1关系的对象上的外键字段可以为空。

在LINQ to SQL中,one -> 0或one关系将只是一个引用另一个LINQ to SQL类但允许为空的字段。

示例表

代码语言:javascript
运行
复制
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 (一个子级可以有多个父级)。

票数 1
EN

Stack Overflow用户

发布于 2009-12-17 21:49:24

如果你想要Z基数,试试这样的:

代码语言:javascript
运行
复制
CREATE TABLE parent (id INTEGER NOT NULL PRIMARY KEY);
CREATE TABLE child (id INTEGER NOT NULL PRIMARY KEY REFERENCES parent (id));

您正在两个表之间创建一个公共主键。如果父级中不存在主键,您将无法在子级中插入行。

代码语言:javascript
运行
复制
SELECT p.*, c.* FROM parent p LEFT JOIN child c ON c.id=p.id

对于不存在任何关系的c.*,将返回NULL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1921788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档