Linq to SQL最佳重载方法匹配错误

时间:2012-03-04 11:43:29

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

怎么不允许这个?

public void addInsertedInformationToDb() { 

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

                myDb.PatientInfos.InsertOnSubmit(insertPersonalInformation);
            }
        }

我的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

对此有什么解决方法?

2 个答案:

答案 0 :(得分:1)

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

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

请参阅Insert with linq2entity

  

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

最后不要忘记致电myDb.SubmitChanges()

答案 1 :(得分:0)

你的代码工作得很好,只需调用这样的方法:

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

您忘记添加括号。