gpt4 book ai didi

c# - 使用从 EF 实体派生的 DTO 实体执行插入

转载 作者:行者123 更新时间:2023-11-30 14:55:07 25 4
gpt4 key购买 nike

我有 ASP.NET MVC 网站和 Entity Framework 的类库

现在我需要使用 IValidatableObject 进行一些数据验证。

所以我在类库 Entity Framework 中有这个:

public class ClientA
{
public Guid ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

在 MVC 项目中我有:

public class Client: ClientA, IValidatableObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext){..}
}

但是我在这里 make cast 出错了:

Client client = new Client();
client.FirstName = "aaaa";
ClientA cl = (ClientA)client;

context.Clients.Add(cl); //error here: Type are different

有什么想法吗?

最佳答案

映射对象可能比转换更可取,例如

ClientA c1 = new ClientA
{
ID = client.ID,
FirstName = client.FirstName,
LastName = client.LastName
}

这当然会变得非常乏味,尤其是当你有大对象时,但你可以使用像 Automapper 这样的工具。 ,在映射具有相同命名属性的对象时可以节省时间。

此外,正如其他答案所建议的那样,您的 View 模型(这就是 Client 的本质)不需要从 ClientA 继承,即使它们具有相同的属性。验证不是“ClientA”类的关注点,对于更复杂的类,这会更加明显,例如,如果您需要从 UI 中隐藏属性或解决全局化/本地化等问题。

关于c# - 使用从 EF 实体派生的 DTO 实体执行插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26061501/

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