我正在创建一个类库来管理共享点上的文件,我将为此使用CSOM库。
但是我有点困惑,例如如何管理与实体框架的DbContext相同的Client Context ,例如是将其创建为Singleton对象还是使用并在每次使用时进行处置。
还有我如何在ClientContext对象上创建包装器,就像我们在EF的DbContext上创建包装器一样?
答案 0 :(得分:0)
没有什么比内置CSOM中的真实实体框架还要好。使用CSOM进行编程更像是使用纯CSOM时使用数据集。因此,使用CSOM在SharePoint中存储数据的方式如下:
List courseList= clientContext.Web.Lists.GetByTitle("Course");
clientContext.Load(courseList);
clientContext.ExecuteQuery();
var courseItemInformation = new ListItemCreationInformation();
ListItem courseItem = courseList.AddItem(courseItemInformation);
courseItem["Title"] = course.Title;
courseItem["Coach"] = course.Coach;
courseItem["Description"] = course.Description;
courseItem["Audience"] = course.Audience.ToString();
courseItem.Update();
clientContext.ExecuteQuery();
return courseItem.Id;
但是,有一个名为“ AweCsome-Framework”的框架试图模仿实体框架的行为。上面与aweCsome框架相同的结果如下所示:
awecsomeTable = new AweCsomeTable(clientContext);
return awecsomeTable.InsertItem(course);
在两个示例中,“课程”都是一个简单的实体。
请注意,Awecsome Framework不允许所有SharePoint List操作,但是标准CRUD可以工作。它还缺少延迟加载等功能,但它是您现在最接近SharePoint上的实体框架的功能。
您可能还想看看PnP(Patterns and practices),它有助于一些标准操作。
此外:ClientContext比DbContext多一点。它不仅涉及数据,还包含有关站点,用户和权限的信息。 SharePoint根本不是数据库(应该被视为一个数据库,尤其是在性能方面)