gpt4 book ai didi

c# - 如何将导航属性名称更改为有意义的名称

转载 作者:太空狗 更新时间:2023-10-29 23:09:04 26 4
gpt4 key购买 nike

我在 Entity Framework 5 中使用 Database First。我们有两个表(大大简化):

  • 地址
    • 街道
    • 城镇(等)
  • 客户
    • 姓名
    • 账单地址
    • 送货地址
    • 替代交付地址

当我们使用 Visual Studio 将数据库导入 EF(“从数据库更新模型”)时,我们最终得到如下代码:

Customer myCustomer;
var a = myCustomer.Address;
var b = myCustomer.Address1;
var c = myCustomer.Address2;

我想要的显然是这样的:

var a = myCustomer.BillingAddress;
var z = myCustomer.BillingAddress.Street; // etc.

我可以在设计器中编辑模型,更改导航属性以提供正确的名称。然而,这不是一个可行的解决方案,因为我们每次对数据库进行更改时都会重建模型。

我尝试过的一个选择是创建一个像这样的部分类(从现有的 MyModel.Designer.cs 复制的代码,只是更改了属性名称):

public partial class Customer : EntityObject
{
[EdmRelationshipNavigationPropertyAttribute("MyModel", "FK_Customers_Addresses_BillingAddress", "Address")]
public Address BillingAddress
{
get {
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<LookupItem>("MyModel.FK_Customers_Addresses_BillingAddress", "Address").Value;
}
set {
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<LookupItem>("MyModel.FK_Customers_Addresses_BillingAddress", "Address").Value = value;
}
}
}

但是,当我运行它时,出现以下错误:

The number of members in the conceptual type 'MyModel.Customer' does not match with the number of members on the object side type 'MyNamespace.DataModel.Customer'. Make sure the number of members are the same.

我试过使用 [NotMapped()] 属性,但这没有任何区别。如果我删除 [EdmRelationshipNavigationPropertyAttribute...] 属性,那么 Linq 会报错并出现以下错误:

The specified type member 'BillingAddress' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

有没有其他方法可以在 Customers 对象中实现有意义的名称?

这是我最后想要的:

var j = myCustomer.BillingAddress;
var k = myCustomer.BillingAddress.Street;
var l = myCustomer.BillingAddress.Town; // etc.

最佳答案

您可能不必担心这一点。在模型设计器中更改属性名称后,EF 将记住自定义命名。它不会被后续更新覆盖。

关于c# - 如何将导航属性名称更改为有意义的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528958/

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