小编Bra*_*che的帖子

每个层次表和继承实现问题

我正在将旧的ASP应用程序迁移到现代.NET版本,以减少我们正在研究.NET 4.0实体框架的开发时间.但是,我们似乎在这个问题上遇到了障碍.

给定是我们数据库的一小部分:表OBJECT,其中包含汽车列表及其各自的属性.我们还有一个表OBJECT_OPTIONS,对于OBJECT中的给定汽车,它包含一个OPTIONS,ACCESSORIES和STANDARD EQUIPMENT列表.这三种类型都具有相同的字段,因此存储在同一个表中.列ncopt_type用于区分不同的列表.可能的值有:'opt','acc'和'sta'.表OBJECT_OPTIONS通过ncopt_obj_id链接到OBJECT,ncopt_obj_id表示表OBJECT中的唯一汽车(obj_id).

我们的目标是为OBJECT实体提供链接到不同OBJECT_OPTIONS列表的3个属性: - 属性OPTIONS - 属性ACCESSORIES - 属性STANDARDEQUIPMENT

我们已经通过继承模型尝试了关于每个层次表的不同教程和演练,但是没有成功创建可构建模型.

从技术上讲,我们所做的是:

  • 创建实体OBJECT
  • 创建实体OBJECT_OPTIONS,使其成为抽象的
  • 使用基本类型OBJECT_OPTIONS添加实体OPTION,ACCESSORY和STANDARD_EQUIP
  • 在ncopt_type ='...'上为所有三个表添加条件
  • 向OBJECT添加3个导航属性,所有属性都链接到其中一个继承的实体:OPTIONS,ACCESSORIES和STANDAARD_EQUIPMENT

在此设置过程中会出现一堆错误,但最终会出现这样的错误:

错误3032:从第250,286行开始映射片段时出现问题:EntityTypes NCO.Model.OPTION,NCO.Model.ACCESSOIRE,NCO.Model.STANDAARD_EQUIP被映射到表OBJECT_OPTIES中的相同行.映射条件可用于区分这些类型映射到的行.

但是,所有三个对象都存在条件.

我找不到解决这个问题的方法,并且已经花费了太多时间.我们目前正在使用一种解决方法,但是我希望能够解决这个问题,因为在项目结束时这种情况会再出现几次.

任何帮助表示感谢,如果您需要更多信息,请给我发表评论或发送电子邮件.

.net entity-framework-4 table-per-hierarchy

5
推荐指数
1
解决办法
692
查看次数

如何避免使用Simple Xml序列化零值

我正在尝试使用简单的xml(http://simple.sourceforge.net/)序列化一个对象.对象设置非常简单:

@Root(name = "order_history")
public class OrderHistory {

    @Element(name = "id", required = false)
    public int ID;

    @Element(name = "id_order_state")
    public int StateID;

    @Element(name = "id_order")
    public int OrderID;
}
Run Code Online (Sandbox Code Playgroud)

问题是当我创建这个没有ID的类的新实例时:

OrderHistory newhistory = new OrderHistory();
newhistory.OrderID = _orderid;
newhistory.StateID = _stateid;
Run Code Online (Sandbox Code Playgroud)

我通过简单的xml序列化它:

StringWriter xml = new StringWriter();
Serializer serializer = new Persister();
serializer.write(newhistory, xml);
Run Code Online (Sandbox Code Playgroud)

它仍然在生成的xml中读取0:

<?xml version='1.0' encoding='UTF-8'?>
<order_history>
    <id>0</id>
    <id_order>2</id_order>
    <id_order_state>8</id_order_state>
</order_history>
Run Code Online (Sandbox Code Playgroud)

我猜这是因为ID属性不为null,因为整数不能为null.但我真的需要摆脱这个节点,我宁愿不要手动删除它.

有人提出任何线索吗?

java serialization simple-framework

3
推荐指数
1
解决办法
1245
查看次数