2013-08-19 2 views
1

Привет, у меня есть таблица с именем Users, у которой уже есть идентификатор зарегистрированных пользователей. Эта таблица находится в другой базе данных, которая называется TrackUsers. Теперь я использую новую базу данных под названием «Термины», в которой есть поле с именем «Идентификатор», которое должно принимать все идентификаторы из таблицы пользователей и вставлять в эту таблицу. Для этого я использовал первый подход к базе данных. Я использую структуру ASP.NET MVC Entity. Ниже приведен код, я использую в контроллере:Как вставлять данные, уже присутствующие в одной таблице, в другую с использованием инфраструктуры Entity

public class HomeController : Controller 
{ 

    private AppMarketplaceEntities db = new AppMarketplaceEntities(); 
    private InstallTrackerEntities db1 = new InstallTrackerEntities(); 


    public ActionResult Index() 
    { 
    List<int> gatewayUserId = new List<int>(); 

     using (var ctx = new InstallTrackerEntities()) 
     { 
      gatewayUserId = ctx.Gateway_Users.Select(f => f.GatewayuserUID).ToList(); 
     } 
     using (var ctx2 = new AppMarketplaceEntities()) 
     { 
      foreach (var id in gatewayUserId) 
      { 
       ctx2.AppTerms.Add(new AppTerm() { GatewayuserUID = id }); 
      } 
      db.SaveChanges(); 
     } 

     return View(); 
     } 

     } 
     } 

Но еще GatewayUserUID показывает нуль в Appterms таблице.

+0

Пожалуйста, прекратите ссылаться на «ASP.NET MVC» просто как «MVC». Один из них является основой, в то время как другой является независимым от языка шаблоном проектирования. Это как вызов IE - «Интернет» –

+0

Моя ошибка. – Dev

+0

Я хотел бы отметить, что вы должны взять t-SQL над Entity Framework для объемных вставок. Если вы вставляете много данных, разница в производительности может быть нетривиальной. –

ответ

1

Предполагая, что у вас есть 2 файла .edmx (и, следовательно, разные dbcontexts для каждой базы данных), вы ищете что-то вроде этого?

List<int> userids = new List<int>(); 
using(var ctx = new TrackUsersEntities()) 
{ 
    userids = ctx.Users.Select(f => f.UserId).ToList(); 
} 

using(var ctx2 = new OtherDatabaseEntities()) 
{ 
    foreach(var id in userids) 
    { 
     ctx2.Terms.Add(new Term() { ID = id }); 
    } 
    ctx2.SaveChanges(); 
} 

Что касается где разместить код, я бы поставил его в слой служб (если она существует), в противном случае в классе контроллера.

+0

Привет, у меня есть только одна база данных в моем MVC, которая из Условий. Я попытался добавить еще одну базу данных, в которой есть таблица Trackusers, и она показывает некоторые ошибки в MVC. Она разработана другими пользователями, и у нее больше файлов, поэтому я даже не могу работать над эта ошибка. Если вы не возражаете, не могли бы вы дать мне код доступа к таблице треклиров с SQL-сервера и обновить в таблице терминов, которые у меня есть в MVC .. – Dev

+0

Самый простой способ получить доступ к таблице вашего трекера - через .edmx-файл (см. [link] (http://msdn.microsoft.com/en-us/library/cc716703 (v = vs.103) .aspx) для руководства по созданию одного из существующей базы данных). – valentin

+0

Но я получаю таблицу не имеет первичного ключа для каждой таблицы, если я пытаюсь использовать базовый подход базы данных для базы данных trackuser. Но эта база данных работает правильно в SQL Server. Так что я должен сейчас делать? – Dev