public int?SaveTable2ByForIdAndForName(Table2 table2) { const string query = "IF EXISTS(SELECT 1 FROM [dbo].[Table2] WHERE [ForId] = @forId AND [ForName] = @forName) UPDATE [dbo].[Table2] SET [Name] = @name, [ForId] = @forId, [ForName] = @forName, [Descript] = @descript WHERE [ForId] = @forId AND [ForName] = @forName ELSE BEGIN INSERT INTO [dbo].[Table2] ([Name], [ForId], [ForName], [Descript]) VALUES(@name, @forId, @forName, @descript) SELECT SCOPE_IDENTITY() END"; var scalar = _db.BeginScalar <int?>(query) .AddIntInParam("Id", table2.Id, true) .AddNvarcharInParam("Name", table2.Name, true) .AddIntInParam("ForId", table2.ForId, true) .AddBigIntInParam("ForName", table2.ForName, true) .AddIntInParam("Descript", table2.Descript, true) .ExecuteSqlString(); var ret = scalar.GetResult(); return(ret); }
/// <summary> /// Save a set of addresses with a user-defined table-valued structure type parameter /// and finally selects a count out /// </summary> /// <param name="addresses"></param> public int SaveAddresses(IEnumerable <Address> addresses) { return(_db.BeginScalar <int>("sp_saveAddresses") .BeginAddStructParam <ScalarHelper <int>, Address>("Addresses") .MapField("City", item => item.City) .MapField("Country", item => item.Country) .FinishMap(addresses) //can also use the auto mapper if the columns are name match and sequence match .AutoMapStructParam("Addresses", addresses) .Execute() .GetResult()); }