抛出异常
System.InvalidCastException:“无法将类型”System.Data.Linq.Table“”1[SalesWithLinq.DAL.UnitName]“”的对象强制转换为类型“System.Collections.Generic.List”“1[SalesWithLinq.DAL.UnitName]”“。”
我想在存储库中添加单元名称lookUpEdit并保存它,一旦我离开单元格,数据将成功保存在数据库中,但当到达铸造行时,抛出异常
RepositoryItemLookUpEdit repoUOM = new RepositoryItemLookUpEdit(); // field of form class
repoUOM.DisplayMember = "Name"; // inside form load event
repoUOM.ValueMember = "ID"; // inside form load event
repoUOM.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; // inside form load event
private void RepoUOM_ProcessNewValue(object sender, DevExpress.XtraEditors.Controls.ProcessNewValueEventArgs e)
{
if (e.DisplayValue is string value && value.Trim() != string.Empty)
{
var NewObject = new UnitName() { Name = value.Trim() };
using (var db = new dbDataContext())
{
db.UnitNames.InsertOnSubmit(NewObject);
db.SubmitChanges();
}
((List<UnitName>)repoUOM.DataSource).Add(NewObject); // exception thrown here
e.Handled = true;
}
}
1条答案
按热度按时间tgabmvqs1#
除非通过继承、协方差或定义的显式类型转换来支持,否则不能显式转换这样的类型。
你可以尝试显式转换为
Table<UnitName>
,因为这是底层类型,请参阅Linq Table,但该表实际上是IListSource
而不是实际的列表,所以你不能直接将Add
记录到它,而是需要Append
或Attach
它们。在这种情况下,我将使用
Attach
,这样Append
就不会将该记录作为新记录跟踪,以便稍后尝试插入数据库。