私は私のデータ層で少し賢明な/愚かな何かをしようと思った。私はJon WagnerのInsight.Databaseを使用していますが、私のテーブルのほとんどはCRUD操作のセットを持っています。だから私はこれをしない理由を、考え出し:Insight.Databaseは[Schema]アノテーションを継承しますか?
public interface IDataInterface<T>
{
Task<T> SelectAsync(int id);
Task<IEnumerable<T>> SelectAsync();
Task<int> UpsertAsync(T obj);
Task<bool> UpsertManyAsync(IEnumerable<T> list);
Task<bool> DeleteAsync(int id);
Task<bool> DeleteManyAsync(IEnumerable<T> list);
}
をして、私はこのような何かを考えていた:クライアントのスキーマ内のクライアントテーブルに関連するすべての私のストアドプロシージャと
[Sql(Schema = "Clients")]
public interface IClientDataInterface : IDataInterface<Client>
{
}
。
しかし、これは仕事と私は最終的にpaydirtを打つまでInnerExceptionsて突っついていません、私は次のエラーを得た -
のInnerException = {「ストアドプロシージャが存在しない 『を選択します』。」 }
でも、Clients.Selectが確実に存在します。
これは、([Sql]アノテーションを持たない)ベースインターフェイスが継承され、後のアノテーションをオーバーライドする[Sql(Schema = "dbo")]の既定値を持つことを示しています。
これは正しいですか?それが正しい場合、ベーススキーマを無効にする方法はありますか?そうでない場合、何が起こっているのですか?
明確にするために、私は{"ストアドプロシージャ 'Upsert'は存在しません。}}という意味で、予約語ではありません。 –