0

これは私のapp.configです

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
  <connectionStrings>
    <add name="DataBaseEntity"  connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SQLite;provider connection string=&quot;data  source=I:Sompepath\dbfilename&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

以下は使用法です

 using (var context = new DataBaseEntity("name=DataBaseEntity"))
            {
                context.Connection.Open();
                var status = delegatefunction(context);
                if (status)
                {
                    context.AcceptAllChanges();
                    context.SaveChanges(SaveOptions.DetectChangesBeforeSave);
                    context.Connection.Close();
                    return true;
                }
                return false;
            }

デリゲート関数は次のようになります

(context =>{var abc = new xyz();                
            context.xyzs.AddObject(abc);});

データベースには、デリゲートに追加されたばかりのデータがありません

アプリケーションに例外はありません

コンテキスト内の接続オブジェクトは次のようになります

データベースとデータソースが空です

4

1 に答える 1

1

削除context.AcceptAllChanges();その呼び出しは、保留中の変更がないことをEFに通知しているSaveChangesため、すべての変更がすでに保存されていると見なされるため、データベースに保存するものはありません。

AcceptAllChangesSaveChangesすべての変更がデータベースに正しく保存されると、通常は内部で呼び出されます。このメソッドは、単一のトランザクション内の複数のコンテキストで変更を保存する必要があるいくつかの複雑なシナリオをサポートするために公開されています。

于 2012-07-23T09:27:45.050 に答える