사용자 테이블과 UserInfo 테이블 사이의 한 쪽에서 선택 사항 인 일대일 관계를 만들려고합니다. 사양은 UserInfo가 정확히 하나의 User를 가져야하며 User는 하나 또는 두 개의 UserInfos를 가질 수 있어야한다는 것입니다. 또한 User 테이블의 열이 수정되지 않도록 UserInfo 테이블에 외래 키가 존재해야합니다.SQL Server 및 LINQ-to-SQL에서 일방 선택적인 일대일 관계를 정의하는 방법?
: 우리는 C# LINQ - 투 - SQL 등 예를 들어,user.UserInfo.Email = "[email protected]",
userInfo.User`,
사용자에 UserInfos에서 테이블에 대한 T-SQL 및 외래 키가 (거의)이다의 관계를 사용하고 싶습니다
CREATE TABLE [dbo].[Users](
[UserId] [int] IDENTITY(1,1) NOT NULL,
[Username] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_dbo.Users] PRIMARY KEY CLUSTERED ([UserId] ASC),
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[UserInfos](
[UserInfoId] [int] IDENTITY(1,1) NOT NULL,
[UserId] [int] NOT NULL,
[Email] [varchar](250) NOT NULL,
CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED ([UserInfoId] ASC),
CONSTRAINT [UQ_UserId] UNIQUE NONCLUSTERED ([UserId] ASC)
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[UserInfos] WITH CHECK
ADD CONSTRAINT [FK_UserInfos.UserID_Users.UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[Users] ([UserId])
GO
ALTER TABLE [dbo].[UserInfos] CHECK CONSTRAINT [FK_UserInfos.UserID_Users.UserId]
GO
문제는 내가 UserInfos.UserId에 Users.UserId (기본 키) (에서 외부 키를 정의 할 경우, 이는 이해, 올바른 방법이 하나에 아닌 선택 사항을 정의하는 것입니다 -one 관계) LINQ-to-SQL 코드 user.UserInfo = null
을 실행하면 user.UserId
이 default(int)
으로 설정됩니다. 나는이 외부 키를 정의하지 않는 경우, 나는에는 LINQ - 투 - SQL 속성을 얻을
ALTER TABLE [dbo].[Users] WITH CHECK
ADD CONSTRAINT [FK_Users.UserId_UserInfos.UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[UserInfos] ([UserId])
GO
ALTER TABLE [dbo].[Users] CHECK CONSTRAINT [FK_Users.UserId_UserInfos.UserId]
GO
: 여기
내가Users
과 UserInfos
사이에 외부 키를 정의하는 데 사용하는 T-SQL입니다 User
을 사용하면 UserInfo
에 액세스 할 수 있습니다. 테이블 Users
과 UserInfos
사이에 LINQ-to-SQL로 트래버스 가능한 관계를 어떻게 가질 수 있습니까? 동시에이 관계가 User
쪽에서 null이 될 수 있습니까? 고맙습니다.
[중복 (http://stackoverflow.com/questions/1921788/linq-2-sql-one-to-zero-or-one-relationship-possible) ; 그 질문은 데이터베이스에서이 관계를 모델링하는 방법을 묻는 것입니다. –
없이 –