假设我有两个数据库表,比如tb1
和tb2
,其中
[tb1]
id primary key
name
lastname
[tb2]
id primary key
tb1_ID foreign key
phone_no
degree
grade
关系tb1
可以保留表二的多个记录。即:一对多的关系。
对于这种关系,我需要一个实体,它在tb1
上只保留tb2
一列且只有一列(仅说ph号)。
以最简单的方式建议我。
答案 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