C# EF 4.2在数据库上创建一对一的无关系关系
我需要将一个经典的ASP重写为C#.NET,系统有两个表: 表1:C# EF 4.2在数据库上创建一对一的无关系关系,c#,entity-framework-4,one-to-one,C#,Entity Framework 4,One To One,我需要将一个经典的ASP重写为C#.NET,系统有两个表: 表1: Table1 { [Key] public string WebRef {get;set;} .... } 表2: Table2 { [Key] public string WebRef{get;set;} [Key] public int sequence{get;set;} ..... } 在SQL Server上,它们没有任何关系,但却是一对一的关系 问题:是否可以使用EF 4
Table1
{
[Key]
public string WebRef {get;set;}
....
}
表2:
Table2
{
[Key]
public string WebRef{get;set;}
[Key]
public int sequence{get;set;}
.....
}
在SQL Server上,它们没有任何关系,但却是一对一的关系
问题:是否可以使用EF 4.2建立关系
我需要将表2放入表1的模型中,如下所示:
Table1
{
[Key]
public string WebRef {get;set;}
....
public Table2 table2{get;set}
}
提前谢谢。试试这个
public class Table1
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOptions.Identity)]
public int Table1ID{get;set;}
}
public class Table2
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOptions.Identity)]
public int Table2ID{get;set;}
[ForeignKey("Table1")]
public int Table1ID {get;set;}
public virtual Table1 Table1 {get; set;}
}
这是一对N关系,要建立一对一关系,需要通过SQLSERVER将Table2的Table1ID设置为UniqueKey,因为EF CodeFirst不支持唯一键…Yes,我这样做了,但收到一个错误:
无效列名'Table2\u WebRef'。
无效列名'Table2\u sequence'。
我试图映射配置,但仍然存在此错误。是否需要在数据库中创建另一个主键?没有其他方法吗?每个表都需要一个PrimaryKey。。。在表2中,您需要一个PrimaryKey和一个UniqueKey,这也是表1的ForeingKey,这是实现一对一关系的唯一方法。EF CodeFirst不支持uniquekey,因此需要通过sqlserver将Table2的Table1ID设置为uniquekey。这是我知道的唯一方法。两个表都有主键,但它们都是字符串。我不知道我是否可以改变数据库,因为经典的ASP已经存在。谢谢。你需要把表2放在表1里面,对吗?要做到这一点,您需要在Table1(公共虚拟Table2 MyNagationProperty{get;set;})中创建一个NavigationProperty,就像我在回答中所做的那样这很有效。我不明白为什么,但至少我暂时不需要更改数据库。