【发布时间】:2015-10-26 17:30:33
【问题描述】:
我有一个项目,我将数据从数据库移动到另一个。我有几张桌子在工作,但当前一张没有。当调用Session.Save(entity) 时似乎没有发生任何事情(没有从 NHibernate 发送插入记录)。未保存的实体是下面代码中的Configuration。我包含了与另一个运行良好的实体相关的其他代码(大约十几个)。数据正在从 Access 数据库传输到 MSSQL 数据库。
复制对象并执行会话保存的代码。在 Configuration 实体上调用 save 时没有插入任何内容。
public void Save(Entities.Access.CompTool o)
{
var n = new CompTool();
n.Name = o.Name;
n.Description = o.Description;
n.DefaultLocation = o.DefaultLocation;
n.DateModified = o.DateModified;
n.OldId = o.Id;
GetSession().Save(n);
}
public void Save(Entities.Access.Configuration o)
{
var n = new Configuration();
n.Name = o.Name;
n.Description = o.Description;
n.Value = o.Value;
GetSession().Save(n);
}
映射Configuration
using TestProg.DatabaseConverter.Entities.Sql;
using FluentNHibernate.Mapping;
namespace TestProg.DatabaseConverter.Mappings.Sql
{
public class ConfigurationMap : ClassMap<Configuration>
{
public ConfigurationMap()
{
Table("Configuration");
Id(x => x.Name).GeneratedBy.Assigned();
Map(x => x.Value);
Map(x => x.Description).Column("Desription");
}
}
}
映射CompTool
using TestProg.DatabaseConverter.Entities.Sql;
using FluentNHibernate.Mapping;
namespace TestProg.DatabaseConverter.Mappings.Sql
{
public class CompToolMap: ClassMap<CompTool>
{
public CompToolMap()
{
Table("CompTools");
Id(x => x.Id).Column("ID");
Map(x => x.Name);
Map(x => x.Description);
Map(x => x.DefaultLocation);
Map(x => x.DateModified);
Map(x => x.OldId);
}
}
}
Configuration实体
using System;
namespace TestProg.DatabaseConverter.Entities.Sql
{
public class Configuration
{
public virtual string Name { get; set; }
public virtual string Value { get; set; }
public virtual string Description { get; set; }
}
}
创建Configuration表的代码:
CREATE TABLE Configuration
(
Name nvarchar(50) PRIMARY KEY,
Value nvarchar(50) DEFAULT '',
Desription nvarchar(100) DEFAULT ''
)
【问题讨论】:
-
为什么要通过代码而不是 SQL 来移动数据?
-
@Andre 因为我部分决定将其用作(重新)熟悉 Fluent NHibernate 的练习,并且数据库还有一些其他“问题”需要更多操作而不仅仅是直接操作复制。
标签: c# nhibernate fluent-nhibernate