2017-09-26 5 views
0

私はいくつかのCRUD機能を持つMVCアプリケーションを持っています。新しいレコードを作成すると、自動的に生成されるはずのフィールドの1つが0を返します。新しいレコードが作成されるたびに増分するためにこのフィールドに値を設定できます。ありがとう。MVCでintフィールドをEFデータベースに手動でインクリメントするC#

テストでは、レコードを追加するたびにStoreNumberが0のままであることが示されています。 enter image description here

コントローラー:

public ActionResult Create() 
     { 
      ViewBag.CustomerID = new SelectList(db.Customers, "CustomerID", "CustomerCompanyName"); 
      return View(); 
     } 



     [HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Create([Bind(Include = "StoreID,CustomerID,StoreName,StoreUID,StoreNumber,StoreLogo,StoreLogoPath,StoreAddress,StoreCity,StoreRegion,StoreCountry")] Store store) 
     { 
      if (ModelState.IsValid) 
      { 
       store.StoreUID = Guid.NewGuid(); 

       db.Stores.Add(store); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      ViewBag.CustomerID = new SelectList(db.Customers, "CustomerID", "CustomerCompanyName", store.CustomerID); 
      return View(store); 
     } 

ストアクラス

public partial class Store 
    { 
     public int StoreID { get; set; } 
     public int CustomerID { get; set; } 
     public string StoreName { get; set; } 

     public System.Guid StoreUID { get; set; } 

     public int StoreNumber { get; set; } 
     public string StoreLogo { get; set; } 
     public string StoreLogoPath { get; set; } 
     public string StoreAddress { get; set; } 
     public string StoreCity { get; set; } 
     public string StoreRegion { get; set; } 
     public string StoreCountry { get; set; } 

     public virtual Customer Customer { get; set; } 
    } 

答えて

1
public partial class Store 
    { 
     public int StoreID { get; set; } 
     public int CustomerID { get; set; } 
     public string StoreName { get; set; } 

     public System.Guid StoreUID { get; set; } 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int StoreNumber { get; set; } 
     public string StoreLogo { get; set; } 
     public string StoreLogoPath { get; set; } 
     public string StoreAddress { get; set; } 
     public string StoreCity { get; set; } 
     public string StoreRegion { get; set; } 
     public string StoreCountry { get; set; } 

     public virtual Customer Customer { get; set; } 
    } 

は自分のフィールドにDatabaseGenerated属性を使用

+0

まだ返っています0 –

+0

あなたはマネージメントスタジオを持っていますか? –

+0

modelBuilder.Entity ().Property(a => a.StoreNumber ).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); –

0
CREATE TABLE [dbo].[Test1] (
    [Id]     INT     NOT NULL  IDENTITY (1, 1), 

あなたが自動インクリメント

+1

私はかなり 'StoreID'が既にアイデンティティであると確信しています 'StoreNumber'は違う – GSerg

+0

アイデンティティは自動増分 –

0

で各テーブルが一つだけのアイデンティティを自動的に生成することができDB表を必要としています。私はこれがStoreIDフィールドだと仮定します。したがって、StoreIDには[DatabaseGenerated(DatabaseGeneratedOption.Identity)]とマークする必要があります。また、列が実際にId(int)で、すでに[DatabaseGenerated(DatabaseGeneratedOption.Identity)]とマークされている場合は、SQLの組み込みID機能によって他のintフィールドが自動的に更新されることはありません。したがって、番号を手動で設定する必要はありません。

+0

ああ、どうすれば手動で番号を設定できますか?ありがとうございます。 –

関連する問題