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);
        }
Пример #2
0
 /// <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());
 }