And*_*llo 3 c# nhibernate asp.net-mvc fluent-nhibernate
在过去的两个小时里,我一直在谷歌搜索和堆栈溢出,无法找到我的问题的答案:
我正在使用ASP.NET MVC和NHibernate,我所要做的就是手动映射我的实体而不映射它的基类.我使用以下约定:
public class Car : EntityBase
{
public virtual User User { get; set; }
public virtual string PlateNumber { get; set; }
public virtual string Make { get; set; }
public virtual string Model { get; set; }
public virtual int Year { get; set; }
public virtual string Color { get; set; }
public virtual string Insurer { get; set; }
public virtual string PolicyHolder { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
EntityBase不应该映射的地方.
我的NHibernate助手类看起来像这样:
namespace Models.Repository
{
public class NHibernateHelper
{
private static string connectionString;
private static ISessionFactory sessionFactory;
private static FluentConfiguration config;
/// <summary>
/// Gets a Session for NHibernate.
/// </summary>
/// <value>The session factory.</value>
private static ISessionFactory SessionFactory
{
get
{
if (sessionFactory == null)
{
// Get the connection string
connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
// Build the configuration
config = Fluently.Configure().Database(PostgreSQLConfiguration.PostgreSQL82.ConnectionString(connectionString));
// Add the mappings
config.Mappings(AddMappings);
// Build the session factory
sessionFactory = config.BuildSessionFactory();
}
return sessionFactory;
}
}
/// <summary>
/// Add the mappings.
/// </summary>
/// <param name="mapConfig">The map config.</param>
private static void AddMappings(MappingConfiguration mapConfig)
{
// Load the assembly where the entities live
Assembly assembly = Assembly.Load("myProject");
mapConfig.FluentMappings.AddFromAssembly(assembly);
// Ignore base types
var autoMap = AutoMap.Assembly(assembly).IgnoreBase<EntityBase>().IgnoreBase<EntityBaseValidation>();
mapConfig.AutoMappings.Add(autoMap);
// Merge the mappings
mapConfig.MergeMappings();
}
/// <summary>
/// Opens a session creating a DB connection using the SessionFactory.
/// </summary>
/// <returns></returns>
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
/// <summary>
/// Closes the NHibernate session.
/// </summary>
public static void CloseSession()
{
SessionFactory.Close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我现在得到的错误是:
System.ArgumentException:类型或方法有2个通用参数,但提供了1个通用参数.必须为每个通用参数提供通用参数
当我尝试添加映射时会发生这种情况.有没有其他方法可以手动映射您的实体并告诉NHibernate不要映射基类?
IncludeBase<T>
AutoMap.AssemblyOf<Entity>()
.IgnoreBase<Entity>()
.Where(t => t.Namespace == "Entities");
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多http://wiki.fluentnhibernate.org/Auto_mapping :)
| 归档时间: |
|
| 查看次数: |
3678 次 |
| 最近记录: |