我正在编写ASP.NET MVC(C#,SQL Server)网站,并希望在我的控制器中编写一个函数,在该控制器中,我传递一个表名,一个列名和一个值来检查传入的内容。传入表中的列名。
如果找到记录,我想返回记录的主键。
如果在表中找不到该值,我想创建它,然后返回该记录的主键。
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;
}
我几乎无法想象这个问题不是重复但我找不到任何例子 - 也许我没有使用正确的条款进行搜索。提前谢谢。
答案 0 :(得分:0)
好的,根据对所需内容的评论澄清,那么您可能想要的是这样的:
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 - 只是注意到了你的标签。语法不同(略有)但想法是一样的。