2

こんにちは、baza.sdf という空のローカル データベースを作成します

私のドメイン

namespace mapowanie.Domain {
    public class User
    {
        public virtual Guid Id { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
    } }

マイ マッピング hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="mapowanie"
                   namespace="mapowanie.Domain">

  <class name="User">
    <id name="Id" generator="guid" />
    <property name="FirstName" type="string" />
    <property name="LastName" type="string"/>
  </class>
</hibernate-mapping>

Hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property>
    <property name="connection.connection_string">Data Source=D:\aaawypociny\mapowanie\mapowanie\baza.sdf</property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>

ユーザーレポ

class UserRepository
    {
        public void Add(User newUser)
        {
            using (ISession session = NHibernateHelper.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    session.Save(newUser);
                    transaction.Commit();

                }
            }
        }
    }

transaction.Commit で追加しようとすると

UserRepository repo = new UserRepository();
var ja = new User { FirstName = "Name", LastName = "Surname" };
repo.Add(ja);

VS ちょうだい

タイプ 'NHibernate.Exceptions.GenericADOException' の未処理の例外が NHibernate.dll で発生しました

追加情報: 挿入できませんでした: [mapowanie.Domain.User#8cafd9e5-0eda-4ccc-ba4a-f8935b68dfdc][SQL: INSERT INTO User (FirstName, LastName, Id) VALUES (?, ?, ?)]

私は何が間違っていることができますか?

4

3 に答える 3

0

Felice Pollano は、予約語 "User" に関して正しかったです。テーブルの名前を変更して、もう一度やり直してください。私は同じ問題に直面し、名前を変更すると問題が解決しました。

また、渡したテーブル名が正しいことを確認してください。名前を変更しませんでした。苦労しました..

<class name="User1" table="User1" lazy="false">

于 2014-07-12T11:15:12.750 に答える
0

実際の例外メッセージが表示されない場合は、次のことを試すことができます。

  • すべてのフィールドがデータベースでnull可能であることを確認して、必要な値が提供されていない場合、何が起こっているかを確認でき、後でいつでも元に戻すことができます

  • フィールドの長さが、送信されるデータを保持するのに十分な大きさであることを確認してください。そうでない場合、data will be truncatedメッセージを装ってメッセージが表示されcould not insertます

于 2015-11-05T02:25:33.447 に答える