【发布时间】:2016-08-18 07:23:05
【问题描述】:
我有两个项目,第一个具有 ClassLibraryServer 命名空间和输出方法,如下所示:
namespace ClassLibraryServer
{
public class Output
{
public static void Card(tblCard card, int myProperty)
{
if (kort.fltNr.Length != 6)
return;
using (myDataContext db = new myDataContext(ClassLibrary.Settings.Instance.SqlS))
{
tblReader[] readers = (from row in db.tblReader
where !row.fltOffline
select row).ToArray();
bool blocked = (db.tblCardBlocked.Where(b => b.fltProperty == myProperty && b.fltCard == card.id).FirstOrDefault() != null);
foreach (tblReader reader in readers)
{
Card(card, reader, blocked);
}
}
}
}
}
foreach循环中的Card方法调用了另外一个方法(重载第一个card方法),它有三个参数,将数据插入到一个sql表中,这里就不分享了,因为太占空间了。
现在我想在另一个具有命名空间 ExtControlModule 的项目中调用上述方法:
namespace ExtControlModule
{
public class TimeModule
{
using (ModuleDataContext dbsys = new ModuleDataContext(ClassLibrary.Settings.Instance.SqlS)) {
var loungee = (from tblLounge in dbsys.tblLounges
select tblLounge).ToList();
var lasaresFas = 0;
foreach (var LoungeRow in loungee)
{
lasaresFas= Convert.ToInt32(dbsys.tblLasares.FirstOrDefault(f => f.id == LoungeRow.fltCardreader).fltproperty);
tblCard cardLoading = dbsys.tblCard.FirstOrDefault(t => t.id == res.fltCardnumber);
Output.Card(cardLoading, lasaresFas);
}
}
}
现在,当我想在 ExtControlModule 中为 Output.Card 分配参数时,Output.Card 中的 cardLoading 参数出现以下错误:
参数 !: 无法从 'ExtControlModule.tblCard' 转换为 ClassLibrary.db.tblCard'
ClassLibrary 是同一解决方案中的另一个项目,其中包含一个带有 SqlS 属性的公共类设置,有助于连接到 SQL 数据库。
由于我是 ASP.NET 和 Sql 的新手,为此苦苦挣扎了很多天,希望我的问题足够清楚。
【问题讨论】:
-
尝试使用完全限定的命名空间
-
你显然有两个同名的类
tblCard。仅仅因为它们具有相同的名称,并不意味着它们可以互换。您需要进行更改,以便您展示的两种方法(可能还有其他方法)就哪个tblCard类是相关的以及它属于哪个程序集达成一致。真的与命名空间无关。
标签: c# sql asp.net database linq-to-sql