gpt4 book ai didi

c# - 如何从外部 DLL 中保存复杂对象?

转载 作者:行者123 更新时间:2023-11-30 18:27:00 25 4
gpt4 key购买 nike

我有一个来自外部 DLL 的复杂对象(我无法更改此对象的代码)。

以该类为例,该类没有id,包含其他复杂类。

public class Car : IVehicle
{
public IWheel Wheel { get; set; }
public IEngine Engine { get; set; }
public Car(IWheel wheel, IEngine engine)
{
Wheel = wheel;
Engine = engine;
}
}

如何使用 Entity Framework Code First 保存此对象?

最佳答案

不幸的是,EntityFramework 不支持复杂类型以外的没有主键的实体。

但是您不一定需要创建 DTO 和从第三方库的对象到这些 DTO 的转换,创建一个子类(例如 CarEntity)然后向其添加一个 Id 属性就足够了:

class Car
{
public string Name { get; set; }
}

class CarEntity : Car
{
public int Id { get; set; }
}

Entity Framework 会将此层次结构正确映射到一个表,请参阅所需的迁移步骤:

CreateTable(
"dbo.CarEntities",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(),
})
.PrimaryKey(t => t.Id);

通过这种方式,您可以用最少的额外工作来存储这些实体,并在第三方库的函数中重用它们,这些函数需要 Car 类型作为输入等。

关于c# - 如何从外部 DLL 中保存复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563603/

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