将来コードを簡単に変更できるようにするために、すべてのコードを rawADO.NET
SQLCommand
からに変更しました。ただし、生のコマンドをデータベースに挿入するほど単純ではないEntity Framework
という点で、多くの欠点があることに気付きました。さらに、 forを生成するために使用しました。Entity Framework
SQL
Reverse Engineering
Models & Mapping
MS Sql Server
現在、次のことをしようとしていますが、どの列も更新されていません。
string sql = @"UPDATE [ProductDB] SET CreatedProduct_Time=getdate(), CreatedProduct_Date=getdate()" + " WHERE [Material_No] = @Material_No";
db.Database.ExecuteSqlCommand(sql, new SqlParameter("@Material_No", materialnotxt));
列が更新されていません。
将来の使用のためにコードを維持するのに役立つかどうか疑問にEntity Framework
思っています.古いものの代わりにそれを使用することは頭痛の種raw SQL code
ですか? これまでのところ多くの制約があり、より高度な学習曲線が必要です。
私がオンラインで見つけたいくつかの紛らわしい部分は、 http://msdn.microsoft.com/en-us/library/bb738684.aspxcontext.Database.ExecuteSqlCommand
との違いは何ですかコードは私のアプローチとはまったく異なって見えます。MSDN
編集
からすべての情報を挿入しながら、Date
とを挿入するために別のアプローチを使用しました。Time
textbox
using (var db = new ROGContext())
{
ProductDB product = new ProductDB
{
Material_No = long.Parse(MaterialNo_txtbox.Text),
Product_Line = ProductLineDropDownList1.SelectedItem.Text,
Product_Description = Description_txtbox.Text,
Size = Size_txtbox.Text,
UOM = UOM_txtbox.Text,
SupplierID = long.Parse(SupplierCountryListBox.SelectedItem.Value),
CreatedProduct_Date = DateTime.Parse(System.DateTime.Now.ToShortDateString()), //in the SQL database I have set the datatype as date to get yyyy/mm/dd
CreatedProduct_Time = DateTime.Now.TimeOfDay //in the SQL database I have set the datatype as time(0) to get hh:mm:ss
};
long queryselect = (from materialno in db.ProductDBs
where materialno.Material_No == product.Material_No
select materialno.Material_No).SingleOrDefault();
if (queryselect != long.Parse(materialnotxt))
{
Label1.Text = "Product successfully added in database";
Label1.Visible = true;
db.ProductDBs.Add(product);
db.SaveChanges();
}