0

私はデータベースモデルを作成するために移行を使用しています。私はすでに、OnModelCreatingをオーバーライドしてすべてのテーブルを作成しました。Asp.Netでデータベースの移行を伴うストアドプロシージャを作成する方法

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder){ 
modelBuilder.Entity<AccessLevel>().Map(c => 
{ 
    .ToTable("AccessLevel", "HelpSystem"); 
    c.Properties(p => new 
     { 
      p.Id, 
      p.Name, 
      p.Description 
     }); 
}).HasKey(x => x.Id); 
modelBuilder.Entity<AccessLevel>().Property(x => x.Id).HasColumnAnnotation("DatabaseGenerated", DatabaseGeneratedOption.Identity);} 

このように私のデータベースにストアドプロシージャを作成します。どうしたらいいですか?

これは、あなたがこのようなExecuteSqlCommand APIを使用してdbcontextのインスタンスに直接ストアドプロシージャのコードを書くことができ、私のストアドプロシージャ

CREATE PROCEDURE [HelpSystem].[sp_GetLanguageContentByObject] @InfoObjectId AS BIGINT AS 
SELECT io.Id InfoObjectId , 
io.Name InfoObject , 
cc.Id ComChannelId , 
cc.Name ComChannel , 
cc2.Id ContentCategoryId , 
cc2.Name ContentCategory , 
c.Id ContentId , 
c.Name ContentName , 
c.Description , 
c.AuthorPartyId , 
c.DefaultLanguageId , 
c3.CultureCode DefaultLanguage , 
lc.Id LanguageContentId , 
lc.LanguageId , 
c2.CultureCode Language , 
lc.Title , 
lc.Content FROM HelpSystem.InfoPointInfoObject ipio 
    JOIN HelpSystem.InfoObject io ON io.Id = ipio.InfoObjectId 
    JOIN HelpSystem.InfoPointComChannel ipcc ON ipcc.InfoPointId = ipio.InfoPointId 
    JOIN HelpSystem.ComChannel cc ON cc.Id = ipcc.ComChannelId 
    JOIN HelpSystem.InfoPointContent ipc ON ipc.InfoPointId = ipcc.InfoPointId 
    JOIN HelpSystem.Content c ON c.Id = ipc.ContentId 
    JOIN HelpSystem.ContentCategory cc2 ON cc2.Id = c.ContentCategoryId 
    JOIN HelpSystem.LanguageContent lc ON lc.ContentId = ipc.ContentId 
    JOIN Localization.Culture c2 ON lc.LanguageId = c2.Id 
    JOIN Localization.Culture c3 ON c.DefaultLanguageId = c3.Id WHERE ipio.InfoObjectId = @InfoObjectId AND (ipio.ExpireDateTime IS NULL OR ipio.ExpireDateTime > GETUTCDATE()) AND (ipcc.ExpiredDateTime IS NULL OR ipcc.ExpiredDateTime > GETUTCDATE()) AND (ipc.ExpiredDateTime IS NULL OR ipc.ExpiredDateTime > GETUTCDATE()) 

答えて

1

のSQLスクリプトです:

_dataContext.Database.ExecuteSqlCommand("stored procedure sql"); 

をすることができますまた、 CreateStoredProcedure関数を使用して、DbMigrationファイルから直接ストアドプロシージャを作成します。 CreateStoredProcedure API

modelBuilderには、ストアードプロシージャを作成するための拡張方法があります。があります。

+0

ありがとうございます..これは私にとっては役に立ちます.. .. :) – user111

関連する問題