我正在将旧的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
我们已经通过继承模型尝试了关于每个层次表的不同教程和演练,但是没有成功创建可构建模型.
从技术上讲,我们所做的是:
在此设置过程中会出现一堆错误,但最终会出现这样的错误:
错误3032:从第250,286行开始映射片段时出现问题:EntityTypes NCO.Model.OPTION,NCO.Model.ACCESSOIRE,NCO.Model.STANDAARD_EQUIP被映射到表OBJECT_OPTIES中的相同行.映射条件可用于区分这些类型映射到的行.
但是,所有三个对象都存在条件.
我找不到解决这个问题的方法,并且已经花费了太多时间.我们目前正在使用一种解决方法,但是我希望能够解决这个问题,因为在项目结束时这种情况会再出现几次.
任何帮助表示感谢,如果您需要更多信息,请给我发表评论或发送电子邮件.
我正在尝试使用简单的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.但我真的需要摆脱这个节点,我宁愿不要手动删除它.
有人提出任何线索吗?