对于我来说,以下是L2S中典型的Update方法。我对其中的许多内容(L2S和业务应用程序开发)还比较陌生,但这只是感觉错误。就像必须有一种更聪明的方式来做到这一点。不幸的是,我在可视化它时遇到了麻烦,希望有人可以提供一个例子或为我指明正确的方向。

要在黑暗中刺伤,我是否有一个将所有这些字段都作为“属性”的Person Object?那又如何呢?

因为L2S已经将我的人员表映射到一个类,这是否多余?

这是否只是“如何进行”,最终您最终会在某个时刻将30个参数(或更多)传递给UPDATE语句?

作为参考,这是一个通过SQL 2005 Standard使用C#,WinForms,.Net 3.5和L2S的商业应用程序。

这是给我的典型更新电话。该文件位于具有其他CRUD方法的文件(BLLConnect.cs)中。 Connect是保存tblPerson的DB的名称。当用户单击save()时,将最终调用这些字段,并且所有这些字段都可能已更新->

public static void UpdatePerson(int personID, string userID, string titleID, string firstName, string middleName, string lastName, string suffixID,
                                                            string ssn, char gender, DateTime? birthDate, DateTime? deathDate, string driversLicenseNumber,
                                                            string driversLicenseStateID, string primaryRaceID, string secondaryRaceID, bool hispanicOrigin,
                                                            bool citizenFlag, bool veteranFlag, short ? residencyCountyID, short? responsibilityCountyID, string emailAddress,
                                                            string maritalStatusID)
    {
        using (var context = ConnectDataContext.Create())
        {
            var personToUpdate =
                (from person in context.tblPersons
                 where person.PersonID == personID
                 select person).Single();

            personToUpdate.TitleID = titleID;
            personToUpdate.FirstName = firstName;
            personToUpdate.MiddleName = middleName;
            personToUpdate.LastName = lastName;
            personToUpdate.SuffixID = suffixID;
            personToUpdate.SSN = ssn;
            personToUpdate.Gender = gender;
            personToUpdate.BirthDate = birthDate;
            personToUpdate.DeathDate = deathDate;
            personToUpdate.DriversLicenseNumber = driversLicenseNumber;
            personToUpdate.DriversLicenseStateID = driversLicenseStateID;
            personToUpdate.PrimaryRaceID = primaryRaceID;
            personToUpdate.SecondaryRaceID = secondaryRaceID;
            personToUpdate.HispanicOriginFlag = hispanicOrigin;
            personToUpdate.CitizenFlag = citizenFlag;
            personToUpdate.VeteranFlag = veteranFlag;
            personToUpdate.ResidencyCountyID = residencyCountyID;
            personToUpdate.ResponsibilityCountyID = responsibilityCountyID;
            personToUpdate.EmailAddress = emailAddress;
            personToUpdate.MaritalStatusID = maritalStatusID;
            personToUpdate.UpdateUserID = userID;
            personToUpdate.UpdateDateTime = DateTime.Now;

            context.SubmitChanges();
        }
    }




因此,如果我正确理解了一切,我将在winform UI中有一个datacontext引用,该字段将在填充字段以及更新,插入和删除时使用。正确?

最佳答案

DataContext遵循称为工作单元的模式。它跟踪您在一段代码中所做的所有插入,更新和删除操作。

一旦那段代码运行完毕,SubmitChanges方法就会一次将所有修改发送到数据库。您不需要做任何事情;您所做的更改将自动保留。

09-11 19:47
查看更多