2
我正在將舊版ASP.Net代碼更新爲MVC5。已經有一個數據庫連接到應用程序。需要嚮應用程序添加新表,以便設置實體框架CF.將表添加到實體框架後,從SQL查詢到現有表的錯誤對象名稱錯誤
現在我需要從現有的表中獲取數據,所以我創建了模型並使用Fluid API來配置表。現有的表沒有主鍵,所以我創建了一個組合鍵。最後,我將配置添加到數據上下文中。
這破壞了舊的asp.net代碼的Global.asax文件中的一些現有代碼。該代碼是用於從同一個表中獲取一些值的SQL語句。
這裏是我的代碼
數據上下文
public class MyDBContext : DbContext
{
public DbSet<EtlParameter> EtlParameter { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// add models to Entity Framework
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
.....
modelBuilder.Configurations.Add(new EtlParameterConfiguration<EtlParameter>());
base.OnModelCreating(modelBuilder);
}
}
示範
public class EtlParameter
{
public string EtlName { get; set; }
public int StepNumber { get; set; }
public string ParameterName { get; set; }
public string TextValue { get; set; }
public int NumericValue { get; set; }
public string RecordDescription { get; set; }
}
流利的配置
public EtlParameterConfiguration()
{
ToTable("ETL_PARAMETER", "dbo");
HasKey(u => new { u.EtlName, u.StepNumber, u.ParameterName });
Property(p => p.EtlName).HasColumnName("ETL_NM");
Property(p => p.StepNumber).HasColumnName("STEP_NR");
Property(p => p.ParameterName).HasColumnName("PARAMETER_NM");
Property(p => p.TextValue).HasColumnName("TEXT_VL");
Property(p => p.NumericValue).HasColumnName("NUMERIC_VL").IsOptional();
Property(p => p.RecordDescription).HasColumnName("RECORD_DESC_TX").IsOptional();
}
這是全局文件中所引發錯誤
protected void Session_Start(object sender, EventArgs e)
{
......
populated from etl_paramter table.
List<ConfigItem> cItems = new List<ConfigItem>();
var connString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDB_ConnectionString1"].ConnectionString;
SqlConnection sqlConn = new SqlConnection(connString);
//SqlConnection sqlConn = new SqlConnection(Properties.Settings.Default.MyDB_ConnectionString);
SqlCommand cmd = new SqlCommand("Select role from operators_llk where [email protected]_nm", sqlConn);
SqlCommand cmd2 = new SqlCommand("select TOP 100 PARAMETER_NM,STEP_NR,TEXT_VL,NUMERIC_VL " +
"from etl_parameter " +
"where ETL_NM = 'mfgtransactions' " +
"order by PARAMETER_NM,STEP_NR ", sqlConn);
sqlConn.Open();
if (!string.IsNullOrEmpty(Request.ServerVariables["HTTP_NTUSERDOMAINID"]))
{
var usr = Request.ServerVariables["HTTP_NTUSERDOMAINID"].Replace(":", "\\");
cmd.Parameters.AddWithValue("@user_nm", usr);
try
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Session["UserRole"]= reader["role"].ToString().Trim();
}
reader.Close();
}
catch
{
sqlConn.Close();
Session.Add("UserRole", usr + " " + Request.ServerVariables["HTTP_NTUSERDOMAINID"] + " " + cmd.CommandText);
}
}
else
{
#if DEBUG
Session.Add("UserRole", "ADMIN");
#else
Session.Add("UserRole", "USER");
#endif
}
//get application settings
try
{
SqlDataReader reader = cmd2.ExecuteReader();
while (reader.Read())
{
cItems.Add(new ConfigItem(reader["PARAMETER_NM"].ToString(),
int.Parse(reader["STEP_NR"].ToString()),
reader["TEXT_VL"].ToString(),
reader["NUMERIC_VL"].ToString()));
}
reader.Close();
Session["Configuration"] = cItems;
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlConn.Close();
}
}
是給錯誤的行的部分是最後}。我試圖盡我所能去除任何不必要的線條。我想知道我做了什麼導致了ASP.Net和EF之間的衝突。
嘗試直接在SQL管理工作室中運行查詢。 – 2015-02-23 20:00:39
嗨@SteveGreene我很確定查詢是好的,它在我嘗試更改之前正在工作,並且我從未在Global.asax文件中更改任何內容。但是當我回到辦公室時,我會明天嘗試它 – 2015-02-23 22:27:14
@SteveGreene你是對的我在SQL管理器中遇到了同樣的錯誤。我必須通過遷移對數據庫進行更改而不意識到這一點 – 2015-02-24 09:12:25