2016-08-16 16 views
0

Windowsフォームプロジェクトとデータベースがあります。テーブルにというレコードを挿入したい(新しいクリニックを作成する)。Entity FrameworkおよびWindowsフォームを使用してデータベースに挿入した後にIDを取得します。

私のWindowsフォームでの私の方法は次のとおりです。これらのメソッドは、作業しているが、私は得ることはありません

// POST: api/Clinics/createNewClinic 
[ResponseType(typeof(Clinic))] 
public IHttpActionResult createNewClinic(Clinic clinic) 
{ 
    if (!ModelState.IsValid) 
    { 
     return BadRequest(ModelState); 
    } 

    db.clinics.Add(clinic); 
    db.SaveChanges(); 

    return Ok(clinic.clinicID); 
} 

private async void insertToDB(string uri , object DTO) 
{ 
    //DTO (or Data Transfer Object) is an instance of a class 
    var client = new HttpClient(); 
    await client.PostAsJsonAsync(uri, DTO); 
} 

と私のコントローラ(私のウェブAPIプロジェクト)の私の方法であり、 ClinicIDを挿入してください。何を変えなければならないのですか?

私のwinformプロジェクトのコードは正しいですか?

+0

あなたの最後の行にclinicID' 'の値とは何ですかコード? –

+0

@HamletHakobyan clinicIDは、私が戻したいクリニックテーブルのPKです。 – Majid

+0

**値**、男性 –

答えて

0

EF生成クラスのデータモデルをパラメータとして使用しているようです。内部/機密用途のためにいくつかの他のプロパティ/メンバーを含めることができるため、データモデルをAPIに公開するべきではありません。代わりに軽量で、ゲッターとセッターだけを含むビューモデル(DTO)を作成してください。

上記のコードで

、あなたのAPI層のコードのビューモデル(のDTO)を実装する場合、それは次のようになります。

var entity = db.Set<Clinic>().Create(); 

//mapping the values of your view models to data models 
entity.Name = clinic.Name; 
entity.Description = clinic.Descrption; 

//add 
db.clinics.Add(entity); 
db.SaveChanges(); 

return Ok(entity.clinicID); 
関連する問題