Есть контекст данных и инициализатор данных,
public class ShoopProductContext: DbContext
{
public DbSet<Client> Clients { get; set; }
public DbSet<OrderLine> OrderLines { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<Product> Products { get; set; }
}
public class shoopProductsInitializer : DropCreateDatabaseAlways<ShoopProductContext>
{
protected override void Seed(ShoopProductContext context)
{
context.Products.Add(new Product { NameProduct = "11" });//Тут должна быть ХП
context.SaveChanges();//
}
}
нужно заполнить таблицу данными через ХП, в инициализаторе данных. У меня вопросы:
Для этого в CodeFirst есть возможность создавать прямые запросы к БД через передачу SQL кода. Для этого можно использовать context.Database.ExecuteSqlCommand(string sql, Object[] param). Вызов хранимой процедуры происходит так же.
Если надо вернуть данные, то вызов происходит через метод context.Database.SqlQuery(), который так же имеют объекты DbSet. Но при этом надо знать возвращаемый тип на который будет мапиться ответ.
context.Database.ExecuteSqlCommand(@"
create or replace function TestFunction()
returns setof ""Test"" as
$$
begin
return query select ...
end;
$$ language plpgsql
");
context.SaveChanges();
И вызов без привязки к данным.
context.Database.ExecuteSqlCommand("select TestFunction()", null);
Или вызов с привязкой к данным.
context.Test.SqlQuery("select * from TestFunction()").First();
Для вставки на сайт карт использую следующий кодПри загрузке страницы в блоке с id map серое поле и карта появляется при резайзе страницы