2016-12-19 5 views
0

У меня есть enity в базе данных. Я хочу создать только 3 копии существующей сущности только для изменения свойства create date. Как это достичь?C# Entityframework как скопировать/клонировать объект

Я загрузил enity с помощью AsNoTracking. и пытается создать в цикле for. Но я получаю только один элемент, добавленный в db.

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 Entity Data Model, назовите его 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(); 
    } 
Смежные вопросы