Asp.net mvc C MVC链接到Sql,将表名和字段名传递给函数
我正在编写一个ASP.NET MVC、SQL Server网站,并希望在控制器中编写一个函数,在该函数中,我传递一个表名、一个列名和一个值,以对照传入表中传入的列名进行检查 如果找到该记录,我想返回该记录的主键 如果在表中找不到该值,我想创建它,然后返回该记录的主键Asp.net mvc C MVC链接到Sql,将表名和字段名传递给函数,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,我正在编写一个ASP.NET MVC、SQL Server网站,并希望在控制器中编写一个函数,在该函数中,我传递一个表名、一个列名和一个值,以对照传入表中传入的列名进行检查 如果找到该记录,我想返回该记录的主键 如果在表中找不到该值,我想创建它,然后返回该记录的主键 private int FindRecord(string tableName, string FieldToCheck, string LookupValue) { /* 1) How do I set the string
private int FindRecord(string tableName, string FieldToCheck, string LookupValue)
{
/* 1) How do I set the string 'tableName' to a table in my context */
/* How do I set the string FieldToCheck to a field in the 'tableName' */
/* How do I return the primary key if LookupValue is in 'FieldToCheck' */
/* How do I add a record and return primary key if it is now */
return PrimaryKeyOfFoundOrNewRecord;
}
我几乎无法想象这个问题不是重复的,但我找不到任何例子——也许我没有使用合适的术语进行搜索。提前谢谢。好的,根据对所需内容的评论说明,您可能需要如下内容:
void CreateLocation(string city,string state, string country)
{
var newLoc = new Location();
newLoc.City = GetCity(city);
if (newLoc.City == null)
{
newLoc.City = new City() { Name = city });
}
//Repeaat this for state and country.
_context.Locations.Add(newLoc);
_context.SaveChanges();
}
City GetCity(string city)
{
var city = from c in _context.Cities
where c.name.Equals(city)
select c;
return city.FirstOrDefault();
}
如果语法有点不正确,请道歉,这里的时间快结束了
很抱歉,其中一些语法可能是实体框架,而不是linq to sql-刚刚注意到您的标记。语法略有不同,但想法是相同的。不能100%确定您在这里要做什么,但这可能不是最好的设计。这个功能的目的是什么?你很可能是对的,它不是最好的设计。我正在努力保持我的数据库正常。对于我添加的每个位置,我希望将城市、州和国家存储在单独的表中。当用户添加位置时,我想检查country表以查看是否已经添加了该国家。州和城市也是如此。我的想法是编写这个函数,在将位置添加到位置表之前检查这些表。我离基地很远吗?我是一个老程序员,刚刚习惯了MVC和面向对象的东西!谢谢你的快速回复!好的,我明白了。是的,您应该检查并将它们与现有记录关联,但您不应该像这样编写“一个函数来管理所有记录”。非常感谢!我认为这是一个适合我的策略!!