提问人:Virus 32 提问时间:9/30/2023 最后编辑:marc_sVirus 32 更新时间:10/2/2023 访问量:122
无效的列名错误,尽管它存在于 Core ASP.NET
Invalid column name error although it exists ASP.NET Core
问:
我正在为会计软件(C# Winforms)设计一个在线商店(ASP.NET Core 6)。
我使用 ASP.NET Core 和 Razor 页面开始了此操作。
我是这个领域的新手,没有经验。记帐软件在 SQL Server 中有许多表,这些表相互关联。 我尝试只为我的项目所需的表格制作模型。
但是在与所需表通信时,:(出现以下错误。
列名称“MobileNo”无效。
列名称“BankAccountNumber”无效。
列名称“BankBranch”无效。
列名“BirthDate”无效。
列名称“BrithLocation”无效。
....
我知道此错误是由于所需表与其他表的关系造成的。
因为在其他类似情况下,当我定义第二个表和关系时,这个错误得到了解决。
....
public string UserID { get; set; }
....
[ForeignKey(nameof(UserID))]
public virtual SalCustomer users { get; set; }
....
但是我遇到了一个与其他表(不需要的表)非常相关的表。
我觉得创建额外的模型是不对的,我不喜欢将它们添加到我的项目中。
EF 中有什么方法可以忽略关系吗?不会在会计软件中引起问题?
因为在我的项目中不需要这些关系。
例如:
客户表与税务文件表或支票表之间的关系,以及...表太多了。
即使我不需要它们,在我的项目中创建所有表是否更好?
生成此错误的代码示例。
var accPerson = _context.AccPerson.SingleOrDefault(c => c.mobileNo == SD.userPh1);
我为我糟糕的英语道歉,并提前感谢您的宝贵意见。
我读了这篇文章,但我认为这些关系将被完全删除,这可能会导致会计软件出现问题。 我无法对数据库进行任何更改。 因为许多公司和软件都在使用这个数据库。
答:
正确的选择可能是先创建一个 EF 项目数据库。Visual Studio 将为你生成模型。因为您不能忽略关系来更新数据库行:您会在外键属性中放置哪些值?
评论
使用 Ef 核心数据库优先方法时,可以指定要生成的表。
Scaffold-DbContext 'Connection string' Microsoft.EntityFrameworkCore.SqlServer -Tables Customer, Purchases, Accounts, Contracts
如果您想要更多控制权,可以了解 T4 模板的工作原理(如果您是初学者,可能会有点复杂)
评论