-2

假设我有两个数据库表,比如说tb1tb2

[tb1]
id      primary key
name
lastname

[tb2]
id      primary key
tb1_ID  foreign key
phone_no
degree
grade


关系tb1可能持有表二的多条记录。即:一对多的关系。
对于这种关系,我需要一个实体来保存所有一列tb1并且只有一列tb2(比如只有 ph 号)。
建议我最简单的方法。

4

3 回答 3

1

最简单的方法 - 创建数据库视图并将其映射为新实体。更好但更复杂的方法 - 直接映射这些表并在 LINQ 查询中使用投影到您的自定义类型:

var data = context.TB2s.Select(t => new TBViewModel
                                        {
                                           Id = t.TB1.Id,
                                           Name = t.TB1.Name,
                                           LastName = t.TB1.LastName,
                                           PhoneNumber = t.PhoneNumber
                                        });
于 2012-04-16T10:48:12.137 回答
1

不知道能不能正常

使用试试看

Public class tb1
{
public int id{get; set;}
public string name{get; set;}
public string lastName{get; set;}
[NotMapped]
public List<string> relatedPhoneNo{get; set;}
}




var data = db.master.Select(t1 => new tb1
            {
                id = t1.id,
                name = t1.name,
                lastName = t1.lastName,
                relatedPhoneNo= (from t2 in db.tb2
                       where t2.id==t.id
                      select t2.city ).ToList()
            }); 
于 2012-04-16T11:42:52.733 回答
-1

您是否真的有一个包含数据的现有数据库,或者您只是希望 EF Code First 生成一个看起来像现有数据库设计的数据库?

如果您只在 MVC3 模型中创建两个单独的类,EF 可以创建一个看起来像这样的数据库(假设您正在根据标签执行 MVC3)。

以下是使用学生和课程的示例:

 public class Student
{

    public int Id { get; set; }

    public string Name{ get; set; }

    //This should make the 1 to many relationship to the second table 
    public List<Course> Courses { get; set; }

}

 public class Course
{

    public int Id { get; set; }

    public string CourseName{ get; set; }

}

在这种情况下,EF Code First 将创建一个与表 Courses 具有一对多关系的表 Student。

生成的数据库如下所示:

[Student]
id      primary key
name

[Courses]
id      primary key
CourseName
Student_ID  foreign key
于 2012-04-16T10:54:46.927 回答