NHibernateと私の目からちょうど始まるすべてが正しいようですが、明らかにそうではありません。Fluent NHibernate、SQL例外の自動設定なし、キーワード 'User'の近くの構文が間違っている
namespace Users
{
public class User
{
public virtual string firstName { get; set; }
public virtual string lastName { get; set; }
public virtual int Id { get; set; }
}
}
とユーザーマッピング(またして列名の周りの角括弧なしで走った:私は下に示したユニットテストをRENとき、私は、キーワード「ユーザー」 の近くに構文エラーがここに私のユーザークラスが存在していることをバック受け取ります同じ結果:
namespace Users
{
class UserMap: ClassMap<User>
{
UserMap()
{
Table("User");
Id(x => x.Id).GeneratedBy.Native().Column("[Id]").Not.Nullable();
Map(x => x.firstName).Not.Nullable().Column("[firstName]");
Map(x => x.lastName).Not.Nullable().Column("[lastName]");
}
}
}
Framework.cs
という名前の設定ファイルnamespace Users
{
public class Framework
{
private const string ConnectionStr = "Data Source=ERALCH-ESTEPHEN;Initial
Catalog=NHDev;Integrated Security=True;Pooling=False";
public static ISessionFactory CreateFactory()
{
return Fluently.Configure()
.Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration
.MsSql2008
.ConnectionString(ConnectionStr))
.Mappings(x=>x.FluentMappings.AddFromAssemblyOf<User>())
.BuildSessionFactory();
}
}
}
データアクセス層 - は、単に同上でユーザーを取得し
namespace Users
{
public class Accesslayer
{
public static IList<User> GetUserById(int Id)
{
ISessionFactory provider = Framework.CreateFactory();
using (ISession session = provider.OpenSession())
{
return session.CreateSQLQuery(String
.Format("SELECT * FROM User WHERE Id={0}", Id)).List<User>();
}
}
}
}
、最終的にユニットテスト層
namespace Users
{
[TestFixture]
class AccessLayerTest
{
[Test]
public void CanGetUserById()
{
Assert.AreEqual(1, Accesslayer.GetUserById(1).Count());
}
}
}
データベースの列がユーザ特性と一致して一つのテーブル「ユーザ」とMSSQLです。どんな助けもありがとうございます。
入力のおかげで結果は変わらなかったが –