首页 / C# / 具有不同名称的相同数据库表的C#匿名类型
具有不同名称的相同数据库表的C#匿名类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了具有不同名称的相同数据库表的C#匿名类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2203字,纯文字阅读大概需要4分钟。
内容图文
![具有不同名称的相同数据库表的C#匿名类型](/upload/InfoBanner/zyjiaocheng/904/c7624e5c5c7043b6a86e9057078f6145.jpg)
我已经找到了答案,但由于我相当缺乏经验,我甚至不知道找到相关信息的正确关键词.道歉,如果这是多余的……
我有一个数据库,其中包含几个具有相同结构的表 – 根据运动类型的不同命名:即MLB_Games,NFL_Games和NCAAF_Games.在我的C#类中,我的逻辑以相同的方式应用于每个,只取决于我碰巧正在进行的运动.有没有办法声明一个列表,这样我就不必拥有3个不同的列表,初始化我正在进行的运动的列表,并且每次在我需要使用的逻辑中都有一个switch语句数据?
这是帮助理解问题的初始化代码.简单地声明一个List dbGames,填充它并在逻辑的其余部分中使用它会容易得多.这可能吗?如果我尝试只使用var,我会得到一个错误,即必须初始化隐式类型的局部变量.
List<MLB_Games> dbMlbGames;
List<NCAAF_Games> dbNcaafGames;
List<NFL_Games> dbNflGames;
using (var dbContext = new SportsProjectXEntities(Properties.Settings.Default.currentEntityConnString))
{
switch (sport)
{
case "MLB":
dbMlbGames = dbContext.MLB_Games.ToList();
break;
case "NCAAF":
dbNcaafGames = dbContext.NCAAF_Games.ToList();
break;
case "NFL":
dbNflGames = dbContext.NFL_Games.ToList();
break;
default:
Logger.Instance.LogMessage("Cannot initialize the requested sport: " + sport);
break;
}
}
解决方法:
通过界面抽象您的entites,例如:
class MLB_Games : IGames
{
public string Name { get; set; }
}
class NCAAF_Games : IGames
{
public string Name { get; set; }
}
class NFL_Games : IGames
{
public string Name { get; set; }
}
interface IGames
{
string Name { get; set; }
}
创建一个属性
List<IGames> games;
然后根据类型加载实体(如果你愿意,可以使用开关而不是字典.优先级问题):
var gamesLoaders = new Dictionary<string, Func<IQueryable<IGames>>>
{
{"MLB", () => dbContext.MLB_Games},
{"NCAAF", () => dbContext.NCAAF_Games},
{"NFL", () => dbContext.NFL_Games}
};
var sport = "MLB";
if(gamesLoaders.ContainsKey(sport))
games = gamesLoaders[sport]().ToList();
else
Logger.Instance.LogMessage("Cannot initialize the requested sport: " + sport);
现在您可以使用一个游戏列表.请注意,您应该为每个具体实体添加特定行为,并通过IGames界面公开它.
编辑:
如果使用模型优先方法并生成实体,则可以使用部分类在单独的文件中定义接口实现. EF已将部分关键字插入到生成的类中.例如,您可以定义:
public partial class MLB_Games : IGames
{
//interface implementation is defined in generated file
}
现在C#编译器将这个定义和EF生成的定义结合起来.从edmx模型更新实体时,此文件不会受到影响.
内容总结
以上是互联网集市为您收集整理的具有不同名称的相同数据库表的C#匿名类型全部内容,希望文章能够帮你解决具有不同名称的相同数据库表的C#匿名类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。