我正在使用 DataObjects.NET 在 C# 中创建一个 WinForms 应用程序。我有点卡在某个点上。我在数据库中有一些数据。对象如下:
[HierarchyRoot]
[Index("Id", Unique = true)]
public class Object : Entity
{
[Field]
public string Id { get; set; }
[Field(Length = 100)]
public string Value { get; set; }
public Object(Session session)
: base(session)
{
}
public Object(Session session,string Id,string Value)
: base(session)
{
//...
}
}
现在我需要从 CSV 文件中导入对象并将它们与数据库中可用的数据进行比较的功能。由于我的构造函数采用 1 个参数Xtensive.Orm.Session
,因此我按以下方式导入对象并返回包含所有导入对象的列表。
while ((sLine = sr.ReadLine()) != null)
{
//Object o = new Object(Xtensive.Orm.Session,string id, string value)
Object o = new Object(session, sLine.Split(';')[0], sLine.Split(';')[1]);
objectlist.Add(o);
}
return objectlist;
获得导入列表后,我对数据进行了一些检查并分析数据以填充 2 个新列表,其中包含已更改的对象和新对象。现在我的问题是,如果用户单击保存按钮,则必须在数据库中更新或添加新对象和更改的对象。我尝试使用Session.SaveChanges();
,但由于我的所有对象都继承自Entity
,因此会话希望保存所有导致重复行出现 SQL 错误的对象。我不知道如何解决这个问题。
private bool SaveChanges()
{
foreach(Object o in newObjects)
//Add new objects to db
foreach(Object o in changedObjects)
//Update object
}
我在万维网上寻找解决方案,但找不到一个很好解释的解决方案。
我是 DataObjects 的新手,我知道它是一个旧的 ORM 框架,但我必须使用它。我希望你们中的一些人可以帮助我解决这个烦人的问题,因为他们的支持已经死了。