2012-05-13 43 views

回答

1

我会创建2个存储过程。一个用于保存客人信息,另一个用于保存预订信息。

CREATE PROCEDURE SaveGuest(@firstName varcahr(50),@lastName varchar(50),@phone varchar(15)) 
AS 
BEGIN 

    INSERT INTO Guest(FirstName,LastName,Phone) VALUES (@firstName,@lastName,@phone); 
    RETURN SCOPE_IDENTITY() 

END 

过程来调用第二PROC

CREATE PROCEDUE SaveReservation(@roomId int,@guestId int,@price decimal) 
AS 
BEGIN 
    INSERT INTO Reservation(Room_ID,Guest_ID,Price) VALUES (@roomID,@guestId,@price) 
    RETURN SCOPE_IDENTITY() 
END 

这是一个示例。您需要为所有非空的数据库列添加字段。

现在创建2个方法来保存这些数据。 SaveGuestSaveReservation。从SaveGuest方法返回新保存的客人ID。现在在您的操作方法调用中,首先使用SaveGuest方法。检查方法的返回值。如果它是一个有效的号码,那意味着客人信息被保存。使用该Guest ID保存第二部分(保留);像这样的东西

public ActionResult SAve(YourViewMolde model) 
{ 
int guestId= SaveGuest("john","alex",....); 
if(guestID>0) 
{ 
    SaveReservation(guestId,34,...); 
} 
else 
{ 
    model.AddModelError("","Error in saving Guest info!"); 
} 
} 
3
无论数据被公布,你可以插入

但是,只要你想,你要尽可能多的表。控制器与表格无关,因此没有限制。

我建议尝试写一些东西,如果你可以得到它的工作发布你的尝试在这里(堆栈溢出...不是这个特别的帖子)描述什么不工作。这更符合SO格式,而不是模糊的非代码特定问题。

相关问题