2016-12-19 13 views
0

私はデータベースにエンティティを持っています。私は、既存のエンティティの3つのコピーを作成したいのは、作成日プロパティを変更するだけです。 これを達成するには?C#Entityframeworkエンティティをコピー/クローンする方法

私はAsNoTrackingでエンティティをロードしました。 forループで作成しようとしています。しかし、私はdbに追加された項目が1つだけになっています。

using(var database = new MyDbContext()) { 
    MyModel myModel = database.Where(m => m.SomeProperty == someValue).AsNoTracking(); 

    for(int i=0;i<5;i++) 
    { 
     myModel.SomeOtherProperty = someOtherValue; //user changed a value 
     database.MyModels.Add(myModel); 
    } 

    database.SaveChanges(); 
} 

おかげ

答えて

0

オーケー、これは、それがどのように行われるかです。テーブルのDDLを作成します。

USE [Breaz] --Your database name here 
GO 

/****** Object: Table [dbo].[CopyCloneTable] Script Date: 12/29/2016 11:15:23 AM ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

SET ANSI_PADDING ON 
GO 

CREATE TABLE [dbo].[CopyCloneTable](
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [PropertyToCopy] [varchar](10) NULL, 
    [SomeOtherProperty] [varchar](10) NULL, 
CONSTRAINT [PK_CopyCloneTable] PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

SET ANSI_PADDING OFF 
GO 

は、行を追加します。

/****** Script for SelectTopNRows command from SSMS ******/ 
--USE your db name instead of Breaz here 
INSERT INTO [Breaz].[dbo].[CopyCloneTable] ([PropertyToCopy], [SomeOtherProperty]) 
    VALUES ('copyme', -1) 

右の接続を使用してプロジェクトを右クリックし、ADO.NETエンティティデータモデルを追加し、MYDBそれを呼び出すと、あなたのテーブルを追加しますここでMyDbContext

名付け保存した図である。

public ActionResult Index9() //this Method name can change 
    { 
     using (var database = new MyDbContext()) 
     { 
      CopyCloneTable myModel = database.CopyCloneTables.Where(m => m.SomeOtherProperty 
       == "-1").FirstOrDefault(); 

      for (int i = 0; i < 3; i++) 
      { 
       database.CopyCloneTables.Add(new CopyCloneTable 
       { 
        PropertyToCopy = myModel.PropertyToCopy, 
        SomeOtherProperty = i.ToString() 
       }); 
      } 

      database.SaveChanges(); 
     } 

     return View(); 
    } 
関連する問題