第一步:创建Sql 数据库与数据表(如上文,略)
第二步:通过VS2010创建Business Data Connectivity Model类型的Project
1):创建BDCModel 类型的Project
2):绑定到对应的Site上
第三步:对初始化的Entity类进行属性的调整,以及对默认的Read List 和 Read Item方法进行属性调整
1):将初始化的Entity名字修改成为Product
===============================================================================
2):将主键修改成为ProductID,设置为int32类型
3):对ReadList方法中的属性进行修改(return parameter --> 即:应该返回所有item的集合)
注:各字段类型要匹配ProductID为int32,ProductName和ProductDescription为string】
======================================================================
==============================================================
=============================================================================
4):仿造上面的步骤对ReadItem方法中的属性进行修改(id and return parameter --> 即:根据选择item的id返回该item的所有信息)
【注:各字段类型要匹配ProductID为int32,ProductName和ProductDescription为string】
第四步:到Solution Explorer中将原始的Entity1类修改为我们使用的Product类,使之与数据库中Product表字段对应
第五步:在ProductService.cs中完成ReadList和ReadItem方法,使之在操作List中的Item时,能够完成对数据库中的数据的更新。代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace BdcModelProject2.BdcModel1 { public class ProductService { static SqlConnection getSqlConnection() { string connectionString = "server=(local);database = EricSunDB;Integrated Security = true"; SqlConnection sqlConn = new SqlConnection(connectionString); return sqlConn; } public static Product ReadItem(int id) { //TODO: This is just a sample. Replace this simple sample with valid code. Product product = new Product(); SqlConnection sqlConn = getSqlConnection(); sqlConn.Open(); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandText = "select ProductID, ProductName, ProductDescription from Product where ProductID=" + id.ToString(); sqlCommand.Connection = sqlConn; SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection); if (sqlDataReader.Read()) { product.ProductID = int.Parse(sqlDataReader[0].ToString()); product.ProductName = sqlDataReader[1].ToString(); product.ProductDescription = sqlDataReader[2].ToString(); } else { product.ProductID = -1; product.ProductName = "Product Not Found"; product.ProductDescription = ""; } sqlConn.Dispose(); return product; } public static IEnumerable<Product> ReadList() { //TODO: This is just a sample. Replace this simple sample with valid code. SqlConnection sqlConn = getSqlConnection(); try { List<Product> productList = new List<Product>(); sqlConn.Open(); SqlCommand sqlComm = new SqlCommand(); sqlComm.Connection = sqlConn; sqlComm.CommandText = "select ProductID, ProductName, ProductDescription from Product"; SqlDataReader sqlDataReader = sqlComm.ExecuteReader(CommandBehavior.CloseConnection); while (sqlDataReader.Read()) { Product product = new Product(); product.ProductID = int.Parse(sqlDataReader[0].ToString()); product.ProductName = sqlDataReader[1].ToString(); product.ProductDescription = sqlDataReader[2].ToString(); productList.Add(product); } return productList; } catch (Exception ex) { string tellMe = ex.ToString(); Product[] productList = new Product[0]; Product product = new Product(); product.ProductID = -1; product.ProductName = "Unable to retrieve data"; productList[0] = product; return (productList); } finally { sqlConn.Dispose(); } } } }
第六步:(主要步骤与上篇的一样,故省略)
1):deploy整个工程
2):之后在SharePoint 的 CA 中Business Data Connectivity Service(Application)中可以看到刚刚创建出来的External Content Type,之后对此实例进行Set Object Permission 和 Set Metadata Store Permission操作
3):然后到SharePoint中的对应site中创建一个External类型的List,并绑定到刚刚创建出来External Content Type,这样创建出来的List就与数据库中表的数据一一对应了
************************************************************************************************************************
************************************************************************************************************************
如果要完成对Item的Delete,Create,Update这些操作,请看如下步骤
附加第一步:创建Delete,Create,Update这三种方法
附加第二步:在后台完成对数据库的这三种操作,代码如下所示
public static void Delete(int productID) { SqlConnection sqlConn = getSqlConnection(); sqlConn.Open(); SqlCommand sqlComm = new SqlCommand(); sqlComm.Connection = sqlConn; sqlComm.CommandText = "delete from Product where ProductID=" + productID.ToString(); sqlComm.ExecuteNonQuery(); sqlConn.Dispose(); } public static Product Create(Product newProductEntity) { SqlConnection sqlConn = getSqlConnection(); sqlConn.Open(); SqlCommand sqlComm = new SqlCommand(); sqlComm.Connection = sqlConn; sqlComm.CommandText = "insert into Product(ProductName, ProductDescription) values('" + newProductEntity.ProductName + "', '" + newProductEntity.ProductDescription + "')"; sqlComm.ExecuteNonQuery(); sqlConn.Dispose(); return newProductEntity; } public static void Update(Product productEntity) { SqlConnection sqlConn = getSqlConnection(); sqlConn.Open(); SqlCommand sqlComm = new SqlCommand(); sqlComm.Connection = sqlConn; sqlComm.CommandText = "update Product set ProductID='"+productEntity.ProductID+"', ProductName='" + productEntity.ProductName + "', ProductDescription='" + productEntity.ProductDescription + "' where ProductID='" + productEntity.ProductID.ToString() + "'"; sqlComm.ExecuteNonQuery(); sqlConn.Dispose(); }
附加第三步:用SharePoint Designer创建New,Update操作时显示的Form(如果不创建对应的Form,在点击操作的时候会有提示报错)
之后就可以在Sharepoint中对Item进行delete,create,edit操作了。