gpt4 book ai didi

c# - BLToolkit 中的字段映射到类类型属性

转载 作者:行者123 更新时间:2023-11-30 15:44:31 25 4
gpt4 key购买 nike

我的表架构(摘录)

create table dbo.MyEntity
(
MyEntityID int identity not null
primary key,
Name nvarchar(50) not null
unique,
Description nvarchar(500) null,
-- these two are optional fields
MaxCount int null,
MinSpace int null
)

实体类

[MapField("MaxCount", "Rule.MaxCount")]
[MapField("MinSpace", "Rule.MinSpace")]
public class MyEntity
{
public int Id { get; set; }

public string Name { get; set; }

public string Description { get; set; }

// when values are not null this property should have an instance
public MyEntityRule Rule { get; set; }

public bool HasRule
{
get { return this.Rule != null; }
}
}

public class MyEntityRule
{
public int MaxCount { get; set; }

public int MinSpace { get; set; }
}

问题?

字段到我的类的映射是问题所在。我想直接映射来自数据表(顶部)的平面结果集的内部类属性。

我已经在类级别设置了 MapFieldAttribute 设置(如上面的代码所示),但我的规则始终为空。假设问题的一部分是必须首先实例化此内部类属性才能分配给它,因为所有 BLToolkit 示例都使用不可为空的内部对象。但在我的例子中,如果它应该是 null(大多数情况下它将是 null),我不想创建它的实例。

那应该怎么做呢?

最佳答案

工作解决方案

I'm really starting to hate BLToolkit due to very limited documentation and community support or lack thereof (at least in English).

我只是测试了可能与此相关的各种属性,实际上我已经使它起作用了。

如果您希望嵌套对象按预期工作,您必须使用额外的 NoInstanceAttribute。而且您必须像以前一样将这些字段映射属性保留在类中。生成的工作代码如下:

[MapField("MaxCount", "Rule.MaxCount")]
[MapField("MinSpace", "Rule.MinSpace")]
public class MyEntity
{
public int Id { get; set; }

public string Name { get; set; }

public string Description { get; set; }

[NoInstance] // this will make it work
public MyEntityRule Rule { get; set; }

public bool HasRule
{
get { return this.Rule != null; }
}
}

所有没有定义值的规则都是空的,其他的被实例化。

关于c# - BLToolkit 中的字段映射到类类型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6007413/

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