alex_kh58
چهارشنبه 24 مهر 1387, 10:50 صبح
من دوتا جدول دارم که بصورت مستر/دیتیل هستند. کلید اصلی این جداول هم Decimal(18,3) هستش. وقتی میخوام ذخیره کنم پیغام خطای
Cannot add an entity with a key that is already in use
میده و ذخیره نمی کنه.
این با Linq کار کرده ام. موقع اجرای دستور odd.SubmitChanges
خطا میده. درضمن برای ذخیره کردن از sp استفاده میکنم.
کد مورد نظر بهمراه یکی از sp هارو گذاشتم. ممنون میشم اگه کمک کنید.
OrderDataContext odd = new OrderDataContext();
odd.CommandTimeout = 9000;
foDarkhast darkhast = new foDarkhast();
darkhast.CalcDate = "";
darkhast.DarkhastDate = "";
darkhast.DarkhastDs = "";
darkhast.DarkhastFooter = "";
darkhast.DarkhastNo = "";
darkhast.Ds = "";
darkhast.FareeCode = "";
darkhast.FastFormMarjooeNo = "";
darkhast.ForooshStateSN = (byte)1;
darkhast.Hajm = 0;
darkhast.VisitorSN = 182.402M;
darkhast.KanaleForooshSN = 2.402M;
darkhast.NoeDarkhastSN = 1.101M;
darkhast.NoeTahvilSN = 1.101M;
darkhast.NoePardakhtSN = 2.101M;
darkhast.CodeFormSN = 1.101M;
darkhast.ForooshStateSN = 1;
darkhast.Host_Name = "nn";
darkhast.Karton = 0;
darkhast.MoshtariInfoSN = 286.402M;
darkhast.PayeSN = 0;
darkhast.VahedeTejariSN = Convert.ToDecimal(18.935);
darkhast.Vazn = 0;
darkhast.VosoolTime = 0;
odd.foDarkhasts.InsertOnSubmit(darkhast);
var OrderDetails =
from details in odd.osSabads
where details.user == (string)Session["UserInfo"]
select new { details.KalaSN, details.KalaDS, details.Gheymat, details.tedad };
foreach (var detail in OrderDetails)
{
foDarkhastHa darkhastha = new foDarkhastHa();
darkhastha.DarkhastHaVosoolTime = 0;
darkhastha.Tedad = Convert.ToDecimal(detail.tedad);
darkhastha.Ds = "";
darkhastha.FactorSN = null;
darkhastha.FastFormFactorNo = null;
darkhastha.Host_Name = "";
darkhastha.DarkhastTypeSN = 1.101M;
darkhastha.KalaSN = Convert.ToDecimal(detail.KalaSN);
darkhastha.KalaTahvilSN = null ;
darkhastha.RecChksum = 0;
darkhastha.DarkhastHaSN = 0M;
darkhastha.TedadTahvil = 0;
darkhastha.UserID_Name = "nnn";
darkhast.foDarkhastHas.Add(darkhastha);
odd.foDarkhastHas.InsertOnSubmit(darkhastha);
}
odd.SubmitChanges();
CREATE PROCEDURE dbo.foDarkhast_Insert_X
( @DarkhastSN decimal(18,3) OUTPUT,
@DarkhastDs VarChar(500),
@DarkhastNo VarChar(15),
@DarkhastDate VarChar(10),
@MoshtariInfoSN decimal(18,3),
@VisitorSN decimal(18,3),
@NoePardakhtSN decimal(18,3),
@NoeTahvilSN decimal(18,3),
@NoeDarkhastSN decimal(18,3),
@CalcDate VarChar(10),
@VosoolTime int,
@Status tinyint,
@IsFactor Bit,
@Tartib SmallInt,
@PayeSN decimal(18,3),
@VahedeTejariSN decimal(18,3),
@ForooshStateSN tinyint,
@Tozihat VarChar(500),
@Karton decimal(18,3),
@Vazn decimal(18,3),
@Hajm decimal(18,3),
@CodeFormSN decimal(18,3),
@SumFastForm BigInt,
@FastFormMarjooeNo VarChar(500),
.
.
.
.
.
@UserID_Name VarChar(500),
@Host_Name VarChar(500),
@RecChksum int
)
AS
SET @DarkhastSN = ISNULL((SELECT MAX([DarkhastSN]) FROM foDarkhast ),1)
SET @DarkhastSN = @DarkhastSN + 1
INSERT INTO foDarkhast
( [DarkhastSN],
[DarkhastDs],
[DarkhastNo],
[DarkhastDate],
[MoshtariInfoSN],
[VisitorSN],
[NoePardakhtSN],
[NoeTahvilSN],
[NoeDarkhastSN],
[CalcDate],
[VosoolTime],
[Status],
[IsFactor],
[Tartib],
[PayeSN],
[VahedeTejariSN],
.
.
.
.
[UserID_Name],
[Host_Name],
[RecChksum])
VALUES
( @DarkhastSN,
@DarkhastDs,
@DarkhastNo,
@DarkhastDate,
@MoshtariInfoSN,
@VisitorSN,
@NoePardakhtSN,
@NoeTahvilSN,
@NoeDarkhastSN,
@CalcDate,
@VosoolTime,
@Status,
@IsFactor,
@Tartib,
@PayeSN,
@VahedeTejariSN,
@ForooshStateSN,
@Tozihat,
@Karton,
@Vazn,
@Hajm,
@CodeFormSN,
.
.
.
.
.
@UserID_Name,
@Host_Name,
@RecChksum)
GO
Cannot add an entity with a key that is already in use
میده و ذخیره نمی کنه.
این با Linq کار کرده ام. موقع اجرای دستور odd.SubmitChanges
خطا میده. درضمن برای ذخیره کردن از sp استفاده میکنم.
کد مورد نظر بهمراه یکی از sp هارو گذاشتم. ممنون میشم اگه کمک کنید.
OrderDataContext odd = new OrderDataContext();
odd.CommandTimeout = 9000;
foDarkhast darkhast = new foDarkhast();
darkhast.CalcDate = "";
darkhast.DarkhastDate = "";
darkhast.DarkhastDs = "";
darkhast.DarkhastFooter = "";
darkhast.DarkhastNo = "";
darkhast.Ds = "";
darkhast.FareeCode = "";
darkhast.FastFormMarjooeNo = "";
darkhast.ForooshStateSN = (byte)1;
darkhast.Hajm = 0;
darkhast.VisitorSN = 182.402M;
darkhast.KanaleForooshSN = 2.402M;
darkhast.NoeDarkhastSN = 1.101M;
darkhast.NoeTahvilSN = 1.101M;
darkhast.NoePardakhtSN = 2.101M;
darkhast.CodeFormSN = 1.101M;
darkhast.ForooshStateSN = 1;
darkhast.Host_Name = "nn";
darkhast.Karton = 0;
darkhast.MoshtariInfoSN = 286.402M;
darkhast.PayeSN = 0;
darkhast.VahedeTejariSN = Convert.ToDecimal(18.935);
darkhast.Vazn = 0;
darkhast.VosoolTime = 0;
odd.foDarkhasts.InsertOnSubmit(darkhast);
var OrderDetails =
from details in odd.osSabads
where details.user == (string)Session["UserInfo"]
select new { details.KalaSN, details.KalaDS, details.Gheymat, details.tedad };
foreach (var detail in OrderDetails)
{
foDarkhastHa darkhastha = new foDarkhastHa();
darkhastha.DarkhastHaVosoolTime = 0;
darkhastha.Tedad = Convert.ToDecimal(detail.tedad);
darkhastha.Ds = "";
darkhastha.FactorSN = null;
darkhastha.FastFormFactorNo = null;
darkhastha.Host_Name = "";
darkhastha.DarkhastTypeSN = 1.101M;
darkhastha.KalaSN = Convert.ToDecimal(detail.KalaSN);
darkhastha.KalaTahvilSN = null ;
darkhastha.RecChksum = 0;
darkhastha.DarkhastHaSN = 0M;
darkhastha.TedadTahvil = 0;
darkhastha.UserID_Name = "nnn";
darkhast.foDarkhastHas.Add(darkhastha);
odd.foDarkhastHas.InsertOnSubmit(darkhastha);
}
odd.SubmitChanges();
CREATE PROCEDURE dbo.foDarkhast_Insert_X
( @DarkhastSN decimal(18,3) OUTPUT,
@DarkhastDs VarChar(500),
@DarkhastNo VarChar(15),
@DarkhastDate VarChar(10),
@MoshtariInfoSN decimal(18,3),
@VisitorSN decimal(18,3),
@NoePardakhtSN decimal(18,3),
@NoeTahvilSN decimal(18,3),
@NoeDarkhastSN decimal(18,3),
@CalcDate VarChar(10),
@VosoolTime int,
@Status tinyint,
@IsFactor Bit,
@Tartib SmallInt,
@PayeSN decimal(18,3),
@VahedeTejariSN decimal(18,3),
@ForooshStateSN tinyint,
@Tozihat VarChar(500),
@Karton decimal(18,3),
@Vazn decimal(18,3),
@Hajm decimal(18,3),
@CodeFormSN decimal(18,3),
@SumFastForm BigInt,
@FastFormMarjooeNo VarChar(500),
.
.
.
.
.
@UserID_Name VarChar(500),
@Host_Name VarChar(500),
@RecChksum int
)
AS
SET @DarkhastSN = ISNULL((SELECT MAX([DarkhastSN]) FROM foDarkhast ),1)
SET @DarkhastSN = @DarkhastSN + 1
INSERT INTO foDarkhast
( [DarkhastSN],
[DarkhastDs],
[DarkhastNo],
[DarkhastDate],
[MoshtariInfoSN],
[VisitorSN],
[NoePardakhtSN],
[NoeTahvilSN],
[NoeDarkhastSN],
[CalcDate],
[VosoolTime],
[Status],
[IsFactor],
[Tartib],
[PayeSN],
[VahedeTejariSN],
.
.
.
.
[UserID_Name],
[Host_Name],
[RecChksum])
VALUES
( @DarkhastSN,
@DarkhastDs,
@DarkhastNo,
@DarkhastDate,
@MoshtariInfoSN,
@VisitorSN,
@NoePardakhtSN,
@NoeTahvilSN,
@NoeDarkhastSN,
@CalcDate,
@VosoolTime,
@Status,
@IsFactor,
@Tartib,
@PayeSN,
@VahedeTejariSN,
@ForooshStateSN,
@Tozihat,
@Karton,
@Vazn,
@Hajm,
@CodeFormSN,
.
.
.
.
.
@UserID_Name,
@Host_Name,
@RecChksum)
GO