C# EF 4.2在数据库上创建一对一的无关系关系

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

我需要将一个经典的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.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,就像我在回答中所做的那样这很有效。我不明白为什么,但至少我暂时不需要更改数据库。