2017-02-06 519 views
0

SQL DATAMANAGEMENT STUDIOでidentity_insertをONに設定しようとすると発生します。テーブル 'tblCustomer'にはIDプロパティがありません。 SET操作を実行できません

この値を扱う理由はわかりません。次のコードがローカルメモリ内のデータベースのコピーよりも多くヒットすることさえわかりません。 「テーブルにID列の明示的な値を挿入することはできません 『tblCustomer』 IDENTITY_INSERTがOFFに設定されている場合、」

` public ActionResult Submit( 
    Customer obj) //validation runs 
    { 

     if (ModelState.IsValid) 
     { 
      CustomerDal Dal = new CustomerDal(); 
      Dal.Customer.Add(obj);  //in memory 
      Dal.SaveChanges();   //physical commit 

      return View("Customer", obj); 
     } 
     else 
     { 
      return View("EnterCustomer", obj); 
     } 
    }` 

    public class Customer 
{ 
    [Key] 
    [Required] 
    [DatabaseGenerated(DatabaseGeneratedOption.none)] 
    public string CustomerCode { get; set; } 

    [Required] 
    [StringLength(10)] 
    [RegularExpression("^[A-Z]{7,7}$")] 
    public string CustomerName { get; set; } 
} 

    public class CustomerDal : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
     modelBuilder.Entity<Customer>().ToTable("tblCustomer"); 
    } 

    public DbSet<Customer> Customer { get; set; } 

} 

CREATE TABLE [dbo].[tblCustomer]( [CustomerCode] [varchar](50) NOT NULL,:デバッグのSaveChangesラインに当たったとき、私は、以前にこのメッセージを持っている

[CustomerName] [varchar](50) NULL, CONSTRAINT [PK_tblCustomer] PRIMARY KEY CLUSTERED ( [CustomerCode] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]

@using (Html.BeginForm("Submit", "Customer", FormMethod.Post)) 
    { 

     <i>Customer Name : </i> @Html.TextBoxFor(m => m.CustomerName) 

    <br> 
    @Html.ValidationMessageFor(x => x.CustomerName) 
    <br> 

     <i>Customer Code : </i> @Html.TextBoxFor(m => m.CustomerCode) 

      <br> 
      @Html.ValidationMessageFor(x => x.CustomerCode) 
      <br> 
      <input id = "Submit1" type = "submit" value = "submit"/> 

      } 
+0

実際には非常に奇妙です。何もあなたがID列を持っていることを指摘し、まだそのエラーがあります... obj Customerオブジェクトを作成するコードを表示できますか? –

+0

Submitアクションを開始するhtmlコードを追加しました(顧客オブジェクトを入力してください) – Breece

答えて

0

あなたのテーブルtblCustomerは、ID列を持っていると仮定すると、あなたが表記法を使用してマッピングを設定していると仮定して、IDプロパティのためにDatabaseGeneratedを指定:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public int Id { get; set; } 

youtテーブルにID列がない場合は、なしに設定してください。

[DatabaseGenerated(DatabaseGeneratedOption.None)] 
public int Id { get; set; } 

https://msdn.microsoft.com/en-us/library/jj591583(v=vs.113).aspx

あなたのテーブルとEFマッピングに関する詳細を提供することはできますか?

+0

私のC#コードと私のSQLテーブルプロパティのどちらにもID列はありません。しかし、このエラーは私にこの問題に対処するように強制します。 – Breece

+0

@Breece、youtテーブルにID列がない場合は、DatabaseGeneratedを* None *に設定してください。あなたのテーブルとEFマッピングの詳細を教えてください。 –

+0

ありがとうございます。しかし問題は続く。 customercodeは文字列です。 – Breece

関連する問題