C# linqTOsql返回一个";“指定的强制转换无效”;运行时异常
我有两个linqTOsql实体,它们具有一对多的父子关系。我遇到了一个问题,当我检索父记录时,我无法循环子表中的相关记录 此代码失败:C# linqTOsql返回一个";“指定的强制转换无效”;运行时异常,c#,asp.net,sql-server,asp.net-mvc,linq-to-sql,C#,Asp.net,Sql Server,Asp.net Mvc,Linq To Sql,我有两个linqTOsql实体,它们具有一对多的父子关系。我遇到了一个问题,当我检索父记录时,我无法循环子表中的相关记录 此代码失败: public string test() { string output; StreamEntry entry = genesisRepository.StreamEntries.FirstOrDefault(x => x.seID == 6); output = entry.seUrl.
public string test()
{
string output;
StreamEntry entry = genesisRepository.StreamEntries.FirstOrDefault(x => x.seID == 6);
output = entry.seUrl.ToString() + "<br />";
foreach(var item in entry.FieldInstance)
{
output = "<ul>";
output += "<li>" + item.fiLabel.ToString() + "</li>";
output = "</ul>";
}
return output;
}
儿童:
[Table]
public class FieldInstance
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public long fiID { get; set; }
/* Other field removed for brevity */
[Column]
public long fiStreamEntryID { get; set; } // FK
// Relationship (many FieldInstances to one StreamEntry)
// using EntityRef<StreamEntry> and ThisKey
// which is "This" table's FK
private EntityRef<StreamEntry> _StreamEntry;
[System.Data.Linq.Mapping.Association(Storage = "_StreamEntry", ThisKey = "fiStreamEntryID")]
public StreamEntry StreamEntry
{
get { return this._StreamEntry.Entity; }
set { this._StreamEntry.Entity = value; }
}
}
[表格]
公共类字段实例
{
[列(IsPrimaryKey=true,IsDbGenerated=true,AutoSync=AutoSync.OnInsert)]
公共长fiID{get;set;}
/*为简洁起见,删除了其他字段*/
[专栏]
public long-fistreameryId{get;set;}//FK
//关系(多个FieldInstance到一个StreamEntry)
//使用EntityRef和ThisKey
//哪个是“此”表的FK
私人实体ref_StreamEntry;
[System.Data.Linq.Mapping.Association(Storage=“\u StreamEntry”,ThisKey=“fiStreamEntryID”)]
公共流媒体中心流媒体中心
{
获取{返回此。\u StreamEntry.Entity;}
设置{this.\u StreamEntry.Entity=value;}
}
}
是什么导致了我的强制转换异常
编辑-添加表定义
StreamEntry表:
seID bigint notnull
seUrl nvarchar(255)notnull
seHeadline nvarchar(255)notnull
seBody ntext可为空
seDescription nvarchar(255)可为空
SENVARCHAR(255)可为空
seTitle nvarchar(255)可为空
seOrder bigint notnull
已创建日期时间notnull
已修改日期时间notnull
StreamID bigint notnull
AllowComents位不为空
FieldInstance表:
ftID bigint notnull
ftIsRequired位notnull
ftLabel nvarchar(50)不为空
ftStrValue nvarchar(1000)可为空
ftDateTimeValue日期时间可为空
ftIntValue int可为空
ftDecValue十进制(18,0)可为空
ftOrder bigint notnull
ftStreamEntryID bigint notnull---FK到StreamEntry表
ftFieldTypeID bigint notbull
编辑-添加了StreamEntry记录
此代码:
public string test()
{
string output;
StreamEntry entry = genesisRepository.StreamEntries.FirstOrDefault(x => x.seID == 6);
output = entry.seID.ToString() + "<br />";
output += entry.seUrl + "<br />";
output += entry.seHeadline + "<br />";
output += entry.seBody + "<br />";
output += entry.seDescription + "<br />";
output += entry.seKeywords + "<br />";
output += entry.seTitle + "<br />";
output += entry.seOrder.ToString() + "<br />";
output += entry.seDateCreated.ToString() + "<br />";
output += entry.seDateModified.ToString() + "<br />";
output += entry.StreamID.ToString() + "<br />";
output += entry.AllowComments.ToString() + "<br />";
return output;
}
公共字符串测试()
{
字符串输出;
StreamEntry条目=genesRepository.StreamEntries.FirstOrDefault(x=>x.seID==6);
output=entry.seID.ToString()+“
”;
输出+=entry.seUrl+“
”;
输出+=entry.seHeadline+“
”;
输出+=entry.seBody+“
”;
输出+=entry.seDescription+“
”;
输出+=entry.seKeywords+“
”;
输出+=entry.seTitle+“
”;
output+=entry.seOrder.ToString()+“
”;
output+=entry.statisteCreated.ToString()+“
”;
output+=entry.statistemodified.ToString()+“
”;
output+=entry.StreamID.ToString()+“
”;
output+=entry.AllowComments.ToString()+“
”;
返回输出;
}
返回:
六,
自闭症
自闭症
>
>
>
>
0
2010-11-16下午4:10:45
2010-11-16下午4:10:45
七十五
假的
是否有可能在不更新DBML的情况下更新了基础数据库中的列类型?@Abe-no。它被设置为不可为null、bigint、自动增量标识。您还可以添加表定义吗?是否可以发布为
StreamEntry entry=.返回的记录代码>您的目标是.NET的哪个版本?@Anders-将编辑表格定义的问题否。我在问题中发布了我的StreamEntry
和FieldInstance`表定义。类型匹配。Doggonit--我想我可能找到了。在我尝试重新编译的一秒钟内,我没有DBML。。我只是使用类定义我的表。。。但我有两个字段设置为int,应该是长的,反之亦然
[Table]
public class FieldInstance
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public long fiID { get; set; }
/* Other field removed for brevity */
[Column]
public long fiStreamEntryID { get; set; } // FK
// Relationship (many FieldInstances to one StreamEntry)
// using EntityRef<StreamEntry> and ThisKey
// which is "This" table's FK
private EntityRef<StreamEntry> _StreamEntry;
[System.Data.Linq.Mapping.Association(Storage = "_StreamEntry", ThisKey = "fiStreamEntryID")]
public StreamEntry StreamEntry
{
get { return this._StreamEntry.Entity; }
set { this._StreamEntry.Entity = value; }
}
}
public string test()
{
string output;
StreamEntry entry = genesisRepository.StreamEntries.FirstOrDefault(x => x.seID == 6);
output = entry.seID.ToString() + "<br />";
output += entry.seUrl + "<br />";
output += entry.seHeadline + "<br />";
output += entry.seBody + "<br />";
output += entry.seDescription + "<br />";
output += entry.seKeywords + "<br />";
output += entry.seTitle + "<br />";
output += entry.seOrder.ToString() + "<br />";
output += entry.seDateCreated.ToString() + "<br />";
output += entry.seDateModified.ToString() + "<br />";
output += entry.StreamID.ToString() + "<br />";
output += entry.AllowComments.ToString() + "<br />";
return output;
}