1
我想創建我的第一個nhibernate應用程序。當我運行程序命令窗口打開並創建數據庫表時。但是,向Team表插入新行的事務失敗,並顯示錯誤「Invalid Cast(檢查屬性類型不匹配的映射);」在session.Save(Team);行中的program.cs文件中發生錯誤。任何人都可以幫助找出爲什麼發生這種情況?任何幫助,將不勝感激。這裏是我的代碼需要幫助通過使用流暢的nhibernate將行插入表
Player.cs
namespace BDB.Entities
{
public class Player
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual string Surname { get; set; }
public virtual string Birthdate { get; set; }
public virtual string Position { get; set; }
public virtual int Salary { get; set; }
public virtual Team Team { get; set; }
}
}
PlayerMap.cs
namespace BDB.Mappings
{
public class PlayerMap : ClassMap<Player>
{
public PlayerMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Surname);
Map(x => x.Birthdate);
Map(x => x.Position);
Map(x => x.Salary);
References(x => x.Team);
}
}
}
Team.cs
namespace BDB.Entities
{
public class Team
{
public virtual int Id { get; protected set; }
public virtual string Country { get; set; }
public virtual string City { get; set; }
public virtual string Title { get; set; }
public virtual string Website { get; set; }
public virtual int Budget { get; set; }
public virtual List<Player> Players { get; set; }
public virtual List<Coach> Coaches { get; set; }
public Team()
{
Players = new List<Player>();
Coaches = new List<Coach>();
}
public virtual void AddPlayer(Player player)
{
player.Team = this;
Players.Add(player);
}
public virtual void AddCoach(Coach coach)
{
coach.Team = this;
Coaches.Add(coach);
}
}
}
TeamMap.cs
namespace BDB.Mappings
{
public class TeamMap : ClassMap<Team>
{
public TeamMap()
{
Id(x => x.Id);
Map(x => x.Country);
Map(x => x.City);
Map(x => x.Title);
Map(x => x.Budget);
Map(x => x.Website);
HasMany(x => x.Players)
.Inverse()
.Cascade.All();
HasMany(x => x.Coaches)
.Inverse()
.Cascade.All();
}
}
}
個
Coach.cs
namespace BDB.Entities
{
public class Coach
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual string Surname { get; set; }
public virtual int Experience { get; set; }
public virtual int Salary { get; set; }
public virtual Team Team { get; set; }
}
}
CoachMap.cs
namespace BDB.Mappings
{
public class CoachMap : ClassMap<Coach>
{
public CoachMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Surname);
Map(x => x.Experience);
Map(x => x.Salary);
References(x => x.Team);
}
}
}
SessionFactory.cs
namespace BDB
{
public class SessionFactory
{
public static ISessionFactory ConfigureSystem()
{
var connString = "server=.\\SQLEXPRESS;database=litest;integrated security=SSPI;";
var configuration = Fluently.Configure()
.Database(MsSqlConfiguration
.MsSql2008
.ConnectionString(connString)
.ShowSql
)
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<Team>()
.AddFromAssemblyOf<Player>()
.AddFromAssemblyOf<Coach>())
.BuildConfiguration();
var exporter = new SchemaExport(configuration);
exporter.Execute(true, true, false);
ISessionFactory sessionFactory = configuration.BuildSessionFactory();
return sessionFactory;
}
}
}
的Program.cs
namespace BDB
{
class Program
{
static void Main(string[] args)
{
ISessionFactory sessionFactory = SessionFactory.ConfigureSystem();
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
Team Team = new Team { Country = "lt", City = "kau", Title = "Zal", Budget = 10000, Website = "www.kz.lt" };
session.Save(Team);
transaction.Commit();
}
}
Console.ReadKey();
}
}
}
檢查* Team * SQL表列的類型,以驗證它們中的任何一個是否使用Team類中的不同類型定義。錯誤告訴你這個消息。 – HuorSwords
你還可以提供關於「團隊」表的詳細信息。這是你的問題所在。 – Suhas