C# 使用SQL从多个表中提取数据并在一个视图中显示
我已经创建了我的应用程序,并使用数据库优先的方法。所以我使用ADO.net实体数据模型将我的数据库添加到项目中,然后以这种方式将控制器添加到项目中,可以说我没有任何模型,我想?但无论如何,我已经添加了控制器,CRUD被自动添加到每个实体中C# 使用SQL从多个表中提取数据并在一个视图中显示,c#,sql,asp.net-mvc,ado.net,crud,C#,Sql,Asp.net Mvc,Ado.net,Crud,我已经创建了我的应用程序,并使用数据库优先的方法。所以我使用ADO.net实体数据模型将我的数据库添加到项目中,然后以这种方式将控制器添加到项目中,可以说我没有任何模型,我想?但无论如何,我已经添加了控制器,CRUD被自动添加到每个实体中 我的问题是,我想在一个网页上查看多个表中的数据。我可以通过sql实现这一点,但如何使用sql提取所需数据并将其显示在屏幕上。我假设您指的是创建实体模型的EF代码优先方法 如果我是对的,那么使用实体(表映射类)作为视图模型的常见做法会与您的视图冲突 当我第一次构
我的问题是,我想在一个网页上查看多个表中的数据。我可以通过sql实现这一点,但如何使用sql提取所需数据并将其显示在屏幕上。我假设您指的是创建实体模型的EF代码优先方法 如果我是对的,那么使用实体(表映射类)作为视图模型的常见做法会与您的视图冲突 当我第一次构建页面时,我经常使用实体作为模型。但正如您所发现的,它们很少是合适的,我经常发现自己正在迁移到更健壮的模型 1) 我建议您在Models目录中创建一个类库。嵌入使多个实体成为类的成员 例如,您可以有一个CustomeActivityModel,它还可以作为客户、销售和订单的成员
class CustomeActivityModel
{
Customers CustomerList { get; set; }
Sales SalesList { get; set; }
Orders OrdersList { get; set; }
}
在控制器中,您将填充它们
ViewResult Index()
{
CustomeActivityModel Model = new CustomeActivityModel();
Model.CustomerList EFContext.Customers;
Model.SalesList EFContext.Sales;
Model.OrdersList EFContext.Orders;
Return View(Model);
}
或者,您也可以使用EF的Linq功能来包括具有关键关系的实体(假设销售具有客户和订单的外键)
我假设您指的是创建实体模型的EF代码优先方法 如果我是对的,那么使用实体(表映射类)作为视图模型的常见做法会与您的视图冲突 当我第一次构建页面时,我经常使用实体作为模型。但正如您所发现的,它们很少是合适的,我经常发现自己正在迁移到更健壮的模型 1) 我建议您在Models目录中创建一个类库。嵌入使多个实体成为类的成员 例如,您可以有一个CustomeActivityModel,它还可以作为客户、销售和订单的成员
class CustomeActivityModel
{
Customers CustomerList { get; set; }
Sales SalesList { get; set; }
Orders OrdersList { get; set; }
}
在控制器中,您将填充它们
ViewResult Index()
{
CustomeActivityModel Model = new CustomeActivityModel();
Model.CustomerList EFContext.Customers;
Model.SalesList EFContext.Sales;
Model.OrdersList EFContext.Orders;
Return View(Model);
}
或者,您也可以使用EF的Linq功能来包括具有关键关系的实体(假设销售具有客户和订单的外键)
以Dave a的答案为基础: 我个人喜欢先用数据库进行这种检索 构建EDMX后,创建一个简单、直接的POCO,模拟您想要返回的内容。一个简单的例子是:
public class ComplexModelFromMultipleTables
{
List<Car> Cars { get; set; }
List<Bike> Bikes { get; set; }
List<Boat> Boats { get; set; }
}
从控制器调用此提供程序,并使用
@model ComplexModelFromMultipleTables
在视图的顶部。以Dave a的答案为基础: 我个人喜欢先用数据库进行这种检索 构建EDMX后,创建一个简单、直接的POCO,模拟您想要返回的内容。一个简单的例子是:
public class ComplexModelFromMultipleTables
{
List<Car> Cars { get; set; }
List<Bike> Bikes { get; set; }
List<Boat> Boats { get; set; }
}
从控制器调用此提供程序,并使用
@model ComplexModelFromMultipleTables
在您的视图顶部。这个答案有更好的解释和伪代码。这个问题相当基本,但答案是经过深思熟虑和精心设计的。我希望你经常发帖子。谢谢你的鼓励,戴夫!我非常感激!这个答案有更好的解释和伪代码。这个问题相当基本,但答案是经过深思熟虑和精心设计的。我希望你经常发帖子。谢谢你的鼓励,戴夫!我非常感激!