C# 实体框架中的一对一关系

C# 实体框架中的一对一关系,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我首先使用E.F db,我有两个表: 用户详细信息: CREATE TABLE [dbo].[detailsUtilisateur] ( [idDetailsUtilisateur] INT IDENTITY (1, 1) NOT NULL, [nomUtilisateur] VARCHAR (30) NULL, [prenomUtilisateur] VARCHAR (30) NULL, [compagnieNom]

我首先使用E.F db,我有两个表:

用户详细信息:

CREATE TABLE [dbo].[detailsUtilisateur] 
(
    [idDetailsUtilisateur] INT          IDENTITY (1, 1) NOT NULL,
    [nomUtilisateur]       VARCHAR (30) NULL,
    [prenomUtilisateur]    VARCHAR (30) NULL,
    [compagnieNom]         VARCHAR (30) NULL,
    [noTelephone]          NCHAR (10)   NULL,
    [adresse]              VARCHAR (40) NULL,
    [ville]                VARCHAR (30) NULL,
    [pays]                 VARCHAR (30) NULL,
    [etat]                 VARCHAR (30) NULL,
    [codePostal]           NCHAR (6)    NULL,

    CONSTRAINT [pk_idDetailsUtilisateur] 
        PRIMARY KEY CLUSTERED ([idDetailsUtilisateur] ASC),
    CONSTRAINT [fk_idDetailsUtilisateur] 
        FOREIGN KEY ([idDetailsUtilisateur]) REFERENCES [dbo].[Utilisateur] ([idUtilisateur])
);
使用者

我正在尝试添加一个用户,然后添加他的详细信息。但我有一个错误:

列idDetailsUtilisateur上的引用映射


我不明白,因为表
detailsUtilisateur
有一个列
idDetailsUtilisateur
,它是主键和外键,为什么会出现此错误?谢谢

请始终显示准确的原始错误消息我通过删除detailsUtilisateur表上的标识(1,1)解决了问题,但我不明白为什么需要删除此标识?有人能给我解释一下吗?我怀疑为什么在用户详细信息表中设置相同的字段作为主键和外键,因为外键总是允许重复,而主键指的是唯一性……首先,这不是真正的1对1关系。这是一个1到0..1的关系,因为您可以创建一个Usilisateur行,而不需要相应的DetailsUsilisateur行。但是,如果之前没有匹配的Usilisateur行,则无法创建detailsUtilisateur行。第二,如果行的顺序不一致,那么生成的标识将不同,并且一个标识将不存在
CREATE TABLE [dbo].[Utilisateur] 
(
    [idUtilisateur] INT          IDENTITY (1, 1) NOT NULL,
    [email]         VARCHAR (30) NOT NULL,
    [mdp]           VARCHAR (90) NOT NULL,

    CONSTRAINT [pk_utilisateur] 
        PRIMARY KEY CLUSTERED ([idUtilisateur] ASC),
    UNIQUE NONCLUSTERED ([email] ASC)
);