データベースにデータを保存する方法がある汎用リポジトリがあります。Entity Frameworkを使用してデータベース内にデータを挿入する
たとえば、Areaを保存する必要がある場合、データベースの中に最後に挿入された値に基づいてフィールドのIDを挿入する必要がありますしかし、何らかの理由でこれを保持しようとすると、テーブルのIDにnull値を挿入できないというエラーが表示されます。
areaRepository.Save(new Area{AreaCode = 999, AreaName = "teste"});
areaRepository.SaveAll();
保存する方法は次のとおりです:
public void Save(T obj)
{
ctx.Set<T>().Add(obj);
}
とエラーが上昇SAVEALLメソッドを実行した後、すべての方法は
public void SaveAll()
{
ctx.SaveChanges();
}
で保存
は、私はこれを実行しようとしました。{ "ORA-01400:にヌルを挿入することは不可能である(\"「\ "" \ "CELG \ EPW_AREAS \ AREA_CODEの\")\ノラ-06512:4" 行目の}
AREA_CODEの値を強制しようとしているのを知って、なぜエンティティ・フレームワークはそれを追加せず、その値をnullと見なしますか?
強制する方法はありますか?
誰でも助けることができますか?
アドバイスありがとうございます。
更新:
エンティティクラス:
[Table("EPW_AREAS", Schema="CELG")]
public class Area
{
[Key]
[Column("AREA_CODE")]
public int AreCode { get; set; }
[Column("AREA_NAME")]
public string AreName { get; set; }
}
アップデート2
コンテキスト
public WsContext(string sConnectionString)
: base(sConnectionString)
{
}
public DbSet<Area> Areas { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
アップデート3
CREATE TABLE CELG.EPW_AREAS
(
AREA_CODE NUMBER NOT NULL,
AREA_NAME VARCHAR2(30 BYTE)
)
TABLESPACE TBS_CELG_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
最も可能性の高い問題は、マッピングが間違っていることです。さらなる助けが必要な場合は、マッピングコードを入力する必要があります。 – Igor
あなたのコンテキストクラスを投稿できますか? – Isma
カラムがnull値を受け入れ、それが "not null"カラムでないことを確かめていますか? –