摘要:
我想用Fluent NHibernate Automapper保存两个同名和不同名称空间的类
上下文
我写的是,为了测试,必须将许多不同的对象导入数据库。我最终会给一个合适的模型写地图。
我一直在使用代码gen和Fluent NHibernate来获取这些DTO并将它们直接转储到db。
异常说(尝试使用auto=“false”)
码
public class ClassConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
instance.Table(instance.EntityType.Namespace.Replace(".", "_"));
}
}
namespace Sample.Models.Test1
{
public class Test
{
public virtual int Id { get; set; }
public virtual string Something { get; set; }
}
}
namespace Sample.Models.Test2
{
public class Test
{
public virtual int Id { get; set; }
public virtual string SomethingElse { get; set; }
}
}这是实际的应用程序代码
var model = AutoMap.AssemblyOf<Service1>()
.Where(t => t.Namespace.StartsWith("Sample.Models"))
.Conventions.AddFromAssemblyOf<Service1>();
var cfg = Fluently.Configure()
.Database(
MySQLConfiguration.Standard.ConnectionString(
c => c.Is("database=test;server=localhost;user id=root;Password=;")))
.Mappings(m => m.AutoMappings.Add(model))
.BuildConfiguration();
new SchemaExport(cfg).Execute(false, true, false);谢谢,我真的很感谢你的帮助
使用Fluent Nhibernate RC1更新
发布于 2009-08-19 07:35:56
“来自fluent-nhibernate论坛的解决方案”(詹姆斯·格雷戈里)
今晚好好看看这个。基本上,这取决于所提到的异常的AutoImport内容;当给NHibernate第一个映射时,它会看到该实体使用完整的程序集限定名命名,并为短名称创建一个导入(很有帮助!),然后当您添加第二个名称时,它会抱怨这个导入现在将发生冲突。因此,解决方案是关闭汽车进口;不幸的是,我们没有办法在钢筋混凝土.我刚做了一个修正,增加了在约定中改变这种情况的能力。因此,如果您获得了最新的二进制文件或源代码,您应该能够更改您所附项目中的约定行以完成以下操作:
.Conventions.Setup(x => {
x.AddFromAssemblyOf<Program>();
x.Add(AutoImport.Never()); }); 它添加了在程序集中定义的所有约定,然后使用助手约定之一关闭自动导入。
发布于 2011-05-23 15:44:22
我无法使用用于FluentMappings的约定(与AutoMappings形成对比)使其工作。但是,以下内容对我来说是可行的,尽管它必须在需要时添加到每个ClassMap中。
public class AMap : ClassMap<A>
{
public AMap()
{
HibernateMapping.Not.AutoImport();
Map(x => x.Item, "item");
...
}
}发布于 2010-07-27 08:13:40
我对此有实际的问题,上面的例子或它的任何变体都没有帮助。
var cfg =新的NotifyFluentNhibernateConfiguration();
return Fluently.Configure()
.Database(
FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2005
.ConnectionString("Server=10.2.65.227\\SOSDBSERVER;Database=NotifyTest;User ID=NHibernateTester;Password=test;Trusted_Connection=False;")
)
.Mappings(m => {
m.AutoMappings
.Add(AutoMap.AssemblyOf<SubscriptionManagerRP>(cfg));
m.FluentMappings.Conventions.Setup(x =>
{
x.AddFromAssemblyOf<Program>();
x.Add(AutoImport.Never());
});
} )
.BuildSessionFactory();我找不到节目的推荐信..。
我还尝试将一个独立的xml文件放到绝望配置中,fluent nhibernate将其映射到auto= false,但没有成功。
我可以有一些更广泛的例子来说明如何做到这一点吗?
编辑,我几周前买了最新的行李箱。
编辑,通过删除所有重复项来解决这个问题。
https://stackoverflow.com/questions/1290466
复制相似问题