2016-05-01 19 views
0

GetContactsByUserId @userId INTという名前のストアドプロシージャがあります。ストアドプロシージャでもEntity Frameworkコアで同じ結果が返される

このストアドプロシージャをEntity Framework Core(7.0.0-rc1-final)で呼び出す必要があります。

ストアドプロシージャが結果にこれらの型を返す:

ContactId INT, ContactName NVARCHAR(200) 

私はC#で作成したオブジェクトが呼び出さ - Contactを:

[Key] 
public int ContactId {get; set;} 

public string ContactName {get;set;} 

そしてこのDbSet:

public DbSet<Contact> Contacts { get; set; } 

私はこのようなストアドプロシージャを呼び出してみました:

_dbContext.Set<Contact>().FromSql("dbo.GetContactsByUserId @userId = {0}", userid); 

最初の呼び出し後、たとえば30行を取得します。私は新しいレコードを追加し、同じパラメータでこのプロシージャを呼び出すと、31行ではなく30行が得られます。

この問題を解決するにはどうすればよいですか?

答えて

1

本当にあなたは_dbcontext.SaveChanges()を呼び出していますか?あなたは新しい連絡先を追加した後に?つまり、あなたは彼らがデータベースにいると確信していますか?

連絡先をリストするストアドプロシージャを使用してコンソールの例を試してみましたが、期待どおりに動作します。これは、最初に連絡先の数を正しく返し、連絡先を追加した後も返されます。ここで

は私ListContactsコードがケースには、それは助けである:

public static List<Contact> ListContacts() 
    { 
     var contacts = new List<Contact>();   

     using (var db = new AppDbContext()) 
     { 
      var contactsSQL = db.Set<Contact>().FromSql("dbo.GetContacts"); 

      foreach (var contactSQL in contactsSQL) 
      { 
       var contact = new Contact(); 
       contact.ID = contactSQL.ID; 
       contact.Name = contactSQL.Name; 
       contacts.Add(contact); 
      } 

      return contacts; 
     } 
    } 
+0

、あなたはこのサンプルに何EFコアのバージョンを使用しましたしてください? – Jenan

+0

私が使っているパッケージはすべて "7.0.0-rc1-final" –

関連する問題