- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我也是 NHibernate 和 FNH 的新手。我熟悉 ORM,并决定看看所有关于这个特定 ORM 的讨论主要是因为生产力的提高。在这一点上,我认为我的时间最好花在其他东西上,但我不想让它打败我,我希望这是我犯的一个愚蠢的错误,因为我非常希望它能给我留下深刻印象。无论如何,我尝试手动映射实体(Fluent)无济于事,现在我正在尝试使用自动映射功能。这是我的域模型。
public class Book
{
public virtual int Id { get; protected set; }
public virtual string Isbn { get; set; }
public virtual string Title { get; set; }
public virtual string Author { get; set; }
public virtual string Publisher { get; set; }
public virtual User Seller { get; set; }
public virtual ICollection<string> Pics {get; private set;}
public virtual string Condition { get; set; }
public virtual decimal Price { get; set; }
public virtual ExchangeMethod PreferedExchangeMethod { get; set; }
}
public class Course
{
public virtual int Id { get; protected set; }
public virtual University University { get; set; }
public virtual Semester Semester { get; set; }
public virtual string Description { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Book> RequiredBooks { get; private set; }
}
public class Exchange
{
public virtual int Id { get; protected set; }
public virtual User Buyer { get; set; }
public virtual User Seller { get; set; }
public virtual Book Book { get; set; }
public virtual ExchangeMethod Method { get; set; }
public virtual decimal Price { get; set; }
public virtual int SellerFeedbackRating { get; set; }
public virtual int BuyerFeedbackRating{get; set;}
public virtual string SellerComment { get; set; }
public virtual string BuyerComment { get; set; }
}
public class Semester
{
public virtual int id { get; protected set; }
public virtual University University { get; set; }
public virtual int Year { get; set; }
public virtual string Term { get; set; }
}
public class University
{
public virtual string Name { get; set; }
public virtual int Connections { get; set; }
public virtual ICollection<Course> Courses { get; private set; }
}
public class User
{
public virtual string UserName { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Email { get; set; }
public virtual ICollection<Course> Enrollment { get; private set; }
public virtual ICollection<Book> Library { get; private set; }
public virtual ICollection<Exchange> Exchanges { get; private set; }
}
这是我的映射
public static ISessionFactory CreateSessionFactory()
{
IPersistenceConfigurer persistenceConfigurer = SQLiteConfiguration.Standard.UsingFile(DbFile);
return Fluently.Configure()
.Database(persistenceConfigurer)
.Mappings(m => m.AutoMappings.Add(
AutoMap.AssemblyOf<User>(assem => assem.Namespace == "DataTransferObjects")
.Override<User>(map => map.Id(user => user.UserName))
.Override<University>(map => map.Id(univ => univ.Name))
))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private static void BuildSchema(Configuration config)
{
// delete the existing db on each run
if (File.Exists(DbFile))
File.Delete(DbFile);
// this NHibernate tool takes a configuration (with mapping info in)
// and exports a database schema from it
new SchemaExport(config).Create(false, true);
}
这是我不断收到的错误,它非常模糊:
XML 验证错误:命名空间“urn:nhibernate-mapping-2.2”中的元素“class”在命名空间“urn:nhibernate-mapping-2.2”中具有无效的子元素“property”。预期的可能元素列表:命名空间“urn:nhibernate-mapping-2.2”中的“元、子选择、缓存、同步、注释、tuplizer、id、复合 ID”
感谢您的帮助,抱歉发了这么长的帖子。
编辑我布置模型的方式是否让我容易出现循环逻辑错误,例如用户有一本书,这本书有一个用户?我希望自动映射能够拾取它。
最佳答案
您使用的是最新版本的 FNH 和 NHibernate 2.1 RTM 吗?
我不太确定您对 ID 代码的覆盖。您是否尝试过不使用它并在每个表中都有一个 Id?
以下是我如何使用 Automap 进行映射。我告诉它从什么 Assembly 中提取,特别是什么命名空间,然后我给它我的实体派生自的 BaseTypes。我使用 ConventionDiscovery 更改一些外键命名约定并设置级联和反向属性等。
PersistenceModel = AutoPersistenceModel
.MapEntitiesFromAssemblyOf<>()
.Where(type => type.Namespace != null && type.Namespace.Contains("Model"))
.WithSetup(s =>
{
s.IsBaseType = type => type == typeof (DateTimeBase)
|| type == typeof (SimpleBase);
})
.ConventionDiscovery.AddFromAssemblyOf();
然后我将持久性模型添加到自动映射中。我使用 ExportTo 方法获取生成的 xml 文件的副本 - 查看 xml 有助于诊断一些问题。
.Mappings(m => m.AutoMappings
.Add(persistenceModel)
.ExportTo(@"../../ExportAutoMaps"));
AutoMapping 对我来说效果很好——尽管它确实需要时间来学习和试验。
我正在使用 jet 数据库,我必须为 NHibernate 显式创建我的数据库文件以在其上运行模式。我不熟悉 sqlLite 的工作原理。
关于c# - Fluent NHibernate AutoMapping,应该可以节省时间,但这让我很抓狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418769/
这是我的 Fluent 模型 struct Ailment: PostgreSQLModel { enum Frequency: String , Content { case regular
我正在尝试使用 Fluent Nhibernate 自动映射一个简单的继承层次结构,并且我需要为每个表使用与其类稍有不同的名称(下划线而不是 Pascal 大小写)。这似乎是一个使用约定的明显地方。我
如何为没有标识列的表指定流畅的 NHibernate 映射? 我想要这样的东西: public sealed class CustomerNewMap : ClassMap, IMap { p
使用 FluentMigrator,有没有办法找出 MigrateUp() 函数是否确实会迁移某些东西,或者它是否已经是最新的? 最佳答案 没有简单的方法可以使用公共(public) api 判断 M
我正在使用 Fluent NHibernate,我喜欢它! 我有一个小问题:启动时间大约是 10 秒,我不知道如何优化 Fluent nHibernate 为了减少这个启动时间的问题,我把它放在一个线
我在 Fluent NHIbernate 中使用 AutoPersistenceModel 来映射我的所有实体,并且一切正常:D 但是,我的几个对象有 public virtual IList Com
我有一个数据库,我正在运行多个应用程序。我喜欢通过为每个应用程序创建模式来分隔表。对于我最新的应用程序,我使用的是 FluentNHibernate。似乎我的大部分管道都是正确的,但是当我尝试查询其中
应用程序有许多扩展程序集,它们包含其类的映射。我需要为这些映射中的所有(基本、连接、多对多等)表名添加前缀。 例如 Assembly: ~/bin/Extensions/Foo.dll
您好,我很好奇 DDD 是如何使用 Fluent Nhibernate 真正实现的。例如,我有一个名为 User 的实体类和另一个名为 UserProfile 的类,就我而言,UserProfile
是否可以在 Fluent NHibernate 中映射来自多个程序集的实体? 我试过了 AutoPersistenceModel .MapEntitiesFromAssemblyOf() .AddEn
我有一个看起来像这样的基类: public abstract class MyBaseClass { public virtual DateTime UpdatedOn { get; set;
我有 Post 和 Comment 类,它们有一对多的关系,其中 Post 有一个评论列表。我如何将其映射为与 Fluent NHibernate 的单向关系,因为评论不需要知道其父 Post?目前,
我对如何查询模型对象的子对象并立即使用它感到困惑。我的Client包含数量Station child final class Client: PostgreSQLModel { var sta
目前我有一个表“ComponentAnalysis”和一个表“HistoryOfUse”,我正试图在 Fluent NHibernate 中进行映射。 一个成分分析应该只有1个使用历史,一个使用历史应
正如标题所说,我想知道我是否应该避免将 fluent nhibernate 用于生产代码,或者它是否足够成熟,可以“深入研究”? :) 最佳答案 FluentNHibernate API 尚未稳定下来
我正在尝试使用 Fluent NHibernate,我有几个问题。我发现缺少文档。 我知道 Fluent NHibernate/NHibernate 允许您自动生成数据库模式。人们通常只对测试/开发数
我正在使用 fluent-nhibernate 约定来映射我的实体: public class HasManyConvention : IHasManyConvention {
如何更改多列索引中的列顺序? IE: mapping.References(x => x.SomeReference).SetAttribute("index", "IX_index"); mappi
我需要像下面的代码一样创建一个外键: Create.ForeignKey().FromTable("TCGDocFiscalOpMedItem").ForeignColumn("IDCabecalho
我正在使用 Sharp 架构,并且在许多情况下都在实体中使用了值对象。这是一个明显的简单示例: public class Person : Entity { protected Person(
我是一名优秀的程序员,十分优秀!