“无法将类型为”System.Data.Linq.Table“1的对象强制转换为类型”System.Collections.Generic.List

jgovgodb  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(125)

抛出异常

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;
    }
}
tgabmvqs

tgabmvqs1#

除非通过继承、协方差或定义的显式类型转换来支持,否则不能显式转换这样的类型。
你可以尝试显式转换为Table<UnitName>,因为这是底层类型,请参阅Linq Table,但该表实际上是IListSource而不是实际的列表,所以你不能直接将Add记录到它,而是需要AppendAttach它们。
在这种情况下,我将使用Attach,这样Append就不会将该记录作为新记录跟踪,以便稍后尝试插入数据库。

相关问题