【问题标题】:Linq to SQL The best Overloaded method Match errorLinq to SQL 最好的重载方法匹配错误
【发布时间】:2012-03-04 11:43:29
【问题描述】:

为什么这是不允许的?

public void addInsertedInformationToDb() { 

            using(DbClassesDataContext myDb = new DbClassesDataContext(dbPath)){

                myDb.PatientInfos.InsertOnSubmit(insertPersonalInformation);
            }
        }

我的插入个人信息在哪里

 private PatientInfo insertPersonalInformation()
        {

            DbClassesDataContext myDb = new DbClassesDataContext(dbPath);

            PatientInfo patientInfo = new PatientInfo();

            patientInfo.Phy_ID = physcianID;
            patientInfo.Pat_First_Name = txtFirstName.Text;
            patientInfo.Pat_Middle_Name = txtMiddleName.Text;
            patientInfo.Pat_Last_Name = txtLastName.Text;
            patientInfo.Pat_Gender = cmbGender.Text;
            patientInfo.Pat_Marital_Status = cmbMaritalStatus.Text;
            patientInfo.Pat_Date_Of_Birth = dtpDOB.Value;
            patientInfo.Pat_Home_Add = txtHomeAdd.Text;
            patientInfo.Pat_Home_Num = txtPhone.Text;
            patientInfo.Pat_Work_Add = txtWorkAdd.Text;
            patientInfo.Pat_Work_Num = txtWorkPhone.Text;
            patientInfo.Pat_Prim_Physician = txtPrimPhysician.Text;
            patientInfo.Pat_Ref_Physician = txtRefePhysician.Text;

            return patientInfo;
        }

我不断收到这些错误

错误 1 ​​'System.Data.Linq.Table.InsertOnSubmit(PatientAdministration.PatientInfo)' 的最佳重载方法匹配有一些无效参数 C:\Users\John\documents\visual studio 2010\Projects\PatientAdministration\PatientAdministration\ Pat_Demog.cs 101 17 患者管理

错误 2 参数 1:无法从“方法组”转换为“PatientAdministration.PatientInfo”C:\Users\John\documents\visual studio 2010\Projects\PatientAdministration\PatientAdministration\Pat_Demog.cs 101 50 PatientAdministration

有什么办法解决这个问题?

【问题讨论】:

    标签: c# .net linq linq-to-sql


    【解决方案1】:

    因为在InsertOnSubmit 中你只能使用实体对象或有效表达式而不调用任意方法,linq2entity 无法将你的方法转换为所需的表达式,你可以按照以下方式提出你的问题:

           using(DbClassesDataContext myDb = new DbClassesDataContext(dbPath)){
                var patientInfo = insertPersonalInformation();
                myDb.PatientInfos.InsertOnSubmit(patientInfo);
            }
    

    Insert with linq2entity:

    要执行 SQL 插入,只需将对象添加到您拥有的对象模型中 创建,然后在 DataContext 上调用 SubmitChanges。

    最后别忘了打myDb.SubmitChanges()

    【讨论】:

    • @user962206 与插入相同。请参阅更新引用链接的一部分,您应该在更新时更加小心(实际上您应该首先获取实体然后对其应用更改)。
    • 但我使用的是表格。您显示的链接仅显示某个部分如果我想选择多个部分?
    • @user962206,目前我正在使用 linq2nhibernate,我没有更新 linq2entity,但我记得更新多条记录真的很难,我曾经为此存储过程(当我正在使用 linq2entity)。我认为您可以在新问题中提出这个问题。 (如何通过 linq2entity 在一个查询中更新多条记录)。但我不认为他们会改进它。
    • 你也可以使用DataTable(但我更喜欢存储过程)。
    • 有任何链接吗?数据表或存储过程?更新?
    【解决方案2】:

    您的代码可以正常工作,只需像这样调用方法:

    myDb.PatientInfos.InsertOnSubmit(insertPersonalInformation());
    myDb.SubmitChanges()
    

    你忘了加上括号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多