gpt4 book ai didi

c# - 使用多个数据库表的 ASP.NET MVC 模型

转载 作者:太空狗 更新时间:2023-10-30 01:23:27 25 4
gpt4 key购买 nike

我刚开始使用 MVC,我正在尝试制作一个使用其他模型的模型。

假设我的数据库中有 2 个表,为了这个问题,我将它们称为表 1 和表 2。在我的 MVC 项目中,这些对应于 Model1 和 Model2。现在我想要的 Model 3 是这样的:

public class Model3
{
public Model1 model1 { get; set; }
public Model2 model2 { get; set; }
public string someString { get; set; }
}

我想用如下所示的 T-SQL 查询创建:

SELECT * FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.fk = t2.pk

现在,为了运行此查询,我使用了 http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios-for-an-mvc-web-application 中描述的技术

相关代码为:

public virtual IEnumerable<TEntity> GetWithRawSql(string query, params object[] parameters)
{
return dbSet.SqlQuery(query, parameters).ToList();
}

我将上述查询输入的位置。

问题(最后!)是 Entity Framework 需要一个 key 。这不会有问题,但在这种情况下,键是 Table1.table1KeyPart 和 Table2.table2KeyPart,对应于 Model1.model1Keypart 和 Model2.model2keypart。

所以我在这里尝试使用第二种技术: in entity framework code first, how to use KeyAttribute on multiple columns

即使用 HasKey 的,使用 u.Model1.model1KeyPartu.Model2.model2KeyPart 代替 userID 和 userName。像这样:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Model3>().HasKey(u => new
{
u.Model1.model1KeyPart,
u.Model2.model2keyPart
});
}

我得到错误:

The properties expression '[u => new <>f__AnonymousType1`2(model1KeyPart = u.Model1.model1KeyPart, model2KeyPart = u.Model2.model2KeyPart)]' is not valid. The expression should represent a property: C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'. When specifying multiple properties use an anonymous type: C#: 't => new { t.MyProperty1, t.MyProperty2 }' VB.Net: 'Function(t) New From { t.MyProperty1, t.MyProperty2 }'.

这是可以修复的东西吗?或者我这样做是完全错误的方式吗?我想我可以只列出 Model3 中 Model1 和 Model2 的所有成员,但这引入了我真的不想要的冗余,但如果这是唯一的方法,那么我会这样做。

抱歉,如果有任何不清楚的地方,如果需要,我会尽力解决。在此先感谢您的帮助!

最佳答案

我认为您需要定义复合键,如果您首先使用实体​​框架代码,您可以在 dbContext.cs 中执行此操作在OnModelCreating这样的方法

modelBuilder.Entity<Model3>().HasKey(s => new { s.Model1Key, s.Model2Key });

关于c# - 使用多个数据库表的 ASP.NET MVC 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11218871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com