所以我已经启动并运行了我的WCF数据服务,但我希望能够插入多个表 - 用一个简单的例子来解释会更容易:
表:
1商店有很多产品。 1产品只能与1个商店相关联。
我打算使用存储过程来加入并返回Shop_ID上的tbl_Products和tbl_Shop
我有一个我想要的场景:
获得此设置的最佳方法是什么?
我最初想在tbl_Shop中创建一个条目,返回这个新创建的项目的ShopID,并在tbl_Products中创建时插入 - 但这似乎是一种混乱/不正确/不可靠的方式。
我没有在表格之间建立关系(不确定是否需要它们?)
由于
我首先创建了数据库,然后从中生成了一个模型。在Model1.Designer.cs中我有:
public partial class MyDBEntities3 : ObjectContext
{
....
在Service.svc中我有:
[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class Service : DataService< MyDBEntities3>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetEntitySetPageSize("*", 50);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);
//set to false in production
config.UseVerboseErrors = true;
}
[WebGet]
public IQueryable<GetRentByDate_Result> GetStoretByID(int ID)
{
// Calls a Stored Procedure which returns the store of a given StoreID
return CurrentDataSource.GetRentByDate(ID).AsQueryable();
}
}
答案 0 :(得分:0)
在这种情况下,外键关系听起来适合您。 你没有说你正在使用什么样的SQL,但这样的事情应该可以解决问题:
ALTER TABLE tbl_Products
ADD CONSTRAINT [MY_FK] FOREIGN KEY([ShopID]) REFERENCES [dbo].[tbl_Shop]([ShopID])
关系的全部关系,以防止可靠性问题等。
编辑:找出新店的ID ......
最简单的方法是使用IDENTITY
列创建商店表格
CREATE TABLE tbl_Shop
(
ShopID INT IDENTITY(1,1) PRIMARY KEY
Location VARCHAR(100)
Owner VARCHAR(100)
)
现在,当您在tbl_Shop中插入一行时,您必须执行以下操作:
INSERT INTO tbl_Shop (Location, Owner) SELECT 'Mars', 'Martian'
并找出ShopID
DECLARE @SHOP INT = SCOPE_IDENTITY (assuming SQLServer 2008)
然后您可以使用该变量插入Product表。
答案 1 :(得分:0)
要使用JavaScript同时插入多个表,您需要构建 深插入 有效负载并将其POST到服务中。如果您使用data.js之类的东西作为OData服务的客户端,这可能会大大简化。
也就是说,这里有一些步骤可以尝试演示如何在JavaScript中执行此操作:
将以下有效负载发布到http://services.odata.org/(S([sessionkeythatyoucopied]))OData/OData.svc/Products(您还应该将Content-Type和Accept标头设置为应用程序/ JSON):
{ “_ 元数据”:{ “类型”: “ODataDemo.Product” }, “ID”:0, “描述”:“玩的乐趣”, “DiscontinuedDate”:空, “名字”:“傻腻子”, “价格”: “4.25”, “等级”:5, “RELEASEDATE”: “/日期(1343765403829)/”, “类别”:{ “ _metadata”:{ “类型”: “ODataDemo.Category” }, “ID”:0, “名称”:“玩具” } }
检查201 Created回复
从“产品和类别”实体集中获取以查看新实体。