C#MVC Link-To-Sql将表名和字段名传递给函数

时间:2014-08-08 14:40:16

标签: asp.net-mvc linq-to-sql

我正在编写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;
}

我几乎无法想象这个问题不是重复但我找不到任何例子 - 也许我没有使用正确的条款进行搜索。提前谢谢。

1 个答案:

答案 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 - 只是注意到了你的标签。语法不同(略有)但想法是一样的。