1
我來自網絡形式世界,我正在學習MVC4和實體框架5與代碼優先的方法。這是我第一次使用EF代碼,我很難理解EF需要從我那裏創建/更新數據庫。如何使用實體框架5(CodeFirst)與REST服務的DataContract
我正在向RESTful服務發出請求,並將響應反序列化爲DataContract
。理想情況下,我希望能夠將這個DataContract
插入到數據庫中,但我不確定如何從DataContract
生成DbContext
類,因此EF可以做到這一點。
的DataContract
的簡化版本...
[DataContract]
public class MoviesDataContract {
[DataMember(Name = "total")]
public int Total { get; set; }
[DataMember(Name = "movies")]
public IEnumerable<Movie> Movies { get; set; }
[DataMember(Name = "link_template")]
public string LinkTemplate { get; set; }
}
[DataContract]
public class Movie {
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "title")]
public string Title { get; set; }
[IgnoreDataMember]
public int? Year {
get {
int i;
return int.TryParse(_year, out i) ? i : (int?)null;
}
set { _year = value.ToString(); }
}
[DataMember(Name = "year")]
private string _year { get; set; }
}
這裏是DataContract
使用的例子...
using(var response = (HttpWebResponse)request.GetResponse()) {
var serializer = new DataContractJsonSerializer(typeof (MoviesDataContract));
var dataContract = (MoviesDataContract)serializer.ReadObject(response.GetResponseStream());
var model = new List<MovieViewModel>();
dataContract.Movies.ToList().ForEach(movie => model.Add(new MovieViewModel {
Title = movie.Title,
Year = movie.Year
}));
// MovieDbContext doesn't exist and it's what I'm unsure of how to generate
// I would think it would work something like this though (once created)
var db = new MovieDbContext();
db.Add(dataContext);
db.SaveChanges();
return View(model);
}
我的問題是...
- 是有一種方法可以從我的
DataContract
生成DbContext
類,還是需要手動創建他們? - 是否有更好的方法來使用(或真的保存到數據庫)反序列化的數據與實體框架(特別是EF5)?
- 有人可以提供一個鏈接,討論與DataContract一起使用的EF(4或更高版本)嗎?我想我可能沒有完全掌握如何有效使用EF5。
這是完美的,謝謝你的鏈接,他們正是我要找的:) – bflemi3