Вызовите sql view из веб-сервиса WCF в EF 4.1 - PullRequest
0 голосов
/ 08 ноября 2011

Я работаю, чтобы сначала написать технику с EF4.1, веб-сервисом WCF и Sql azure.Чтобы повысить производительность, я хотел создать представление для извлечения данных на стороне сервера.но согласно this мы не можем сначала использовать sql View с EF-кодом.Потому что база данных и модели определены.у него есть данные.для повторного создания и выгрузки данных для единственного создаваемого представления требуется время.

, поэтому я просто создал View явно на сервере SQL.теперь я хочу вызвать это представление из моего веб-сервиса wfc.Теперь я хочу получить доступ к этому представлению в качестве набора данных в WCF.нужны руководящие принципы.и правильный подход

1 Ответ

1 голос
/ 12 ноября 2011

Не могли бы вы определить таблицу в codefirst с теми же столбцами, а затем создать собственный инициализатор, который удаляет таблицу из базы данных и снова создает ее как представление?

Тогда вы сможете запросить его, как обычно.

Изменить обновление, чтобы показать рабочий пример

public class User
{
  public int Id { get; set; }
  public string Email { get; set; }
}

public class UserView
{
  public int Id { get; set; }
  public string Email {get; set;}       
}

public class TestContext : DbContext
{
  static TestContext()
  { 
    Database.SetInitializer<TestContext>(new DatabaseInitializer());
  }

  public DbSet<User> Users { get; set; }
  public DbSet<UserView> UserView { get; set; }
}


class DatabaseInitializer : DropCreateDatabaseIfModelChanges<TestContext>
{
  protected override void Seed(TestContext context)
  {
    base.InitializeDatabase(context);
    context.Database.ExecuteSqlCommand("drop table UserViews");
    context.Database.ExecuteSqlCommand(@"CREATE VIEW [dbo].[UserViews] AS SELECT * 
      from [dbo].[Users]
      GO");
    context.Users.Add(new User() { Email = "test@test.com" });
  }     
}

...

using (TestContext context = new TestContext())
{
  context.UserView.ToList(); //contains all the users
}
...