首先使用现有数据库代码

时间:2012-04-16 10:41:37

标签: asp.net asp.net-mvc-3 entity-framework asp.net-mvc-2 entity-framework-4

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

[tb1]
id      primary key
name
lastname

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


关系tb1可以保留表二的多个记录。即:一对多的关系。
对于这种关系,我需要一个实体,它在tb1上只保留tb2一列且只有一列(仅说ph号)。
以最简单的方式建议我。

3 个答案:

答案 0 :(得分: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
                                        });

答案 1 :(得分: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()
            }); 

答案 2 :(得分:-1)

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

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

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

 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具有1对多关系的表Student。

生成的数据库如下所示:

[Student]
id      primary key
name

[Courses]
id      primary key
CourseName
Student_ID  foreign key