|
That's better - you are disposing of the stream when you no longer need it!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
If you are using C# 6 or later, then there is a much shorter form of this:
if (PdfSource is not null)
PdfSource.Dispose();
PdfSource = new FileStream(address, FileMode.Open); Try this:
PdfSource?.Dispose();
PdfSource = new FileStream(address, FileMode.Open); The null conditional operator is quite handy!
Member access operators and expressions - C# reference | Microsoft Docs[^]
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
|
I have store procedure which insert and update data and at the end it return multiple data.
i am using SQL helper utility class to call store procedure. i use
ds = await SqlHelper.ExecuteDatasetAsync(ConnectionManager.GetConnectionString(), CommandType.StoredProcedure, "USP_InsertBMAsLineItem", spParameter);
execution stuck at this line. i am not able to figure out where i made the mistake. when i execute SP from SSMS then everything goes fine. please see my store procedure and c# code. tell me where i made the mistake.
ALTER PROC USP_InsertBMAsLineItem
(
@TickerID VARCHAR(20),
@CommaSeparatedItems VARCHAR(MAX),
@UserID VARCHAR(20)
)
AS
BEGIN
Declare @Start INT, @Count INT,@MaxOrder INT
SET @Start=1
SET @Count=1
SET @MaxOrder=0
BEGIN TRY
BEGIN TRAN
DROP TABLE IF EXISTS #Tmpdata
CREATE TABLE #Tmpdata
(
ID INT Identity,
LineItem VARCHAR(MAX)
)
INSERT INTO #Tmpdata(LineItem)
(
SELECT value as LineItem
FROM STRING_SPLIT(@CommaSeparatedItems, ',')
)
MERGE INTO TblLineItemTemplate Trg
USING
(
SELECT value as LineItem
FROM STRING_SPLIT(@CommaSeparatedItems, ',')
) AS Src
ON UPPER(TRIM(Trg.LineItem)) = UPPER(TRIM(Src.LineItem))
AND Trg.TickerID = @TickerID
WHEN MATCHED THEN
UPDATE SET Trg.Action = 'U', ModifiedBy=@UserID
WHEN NOT MATCHED THEN
INSERT
(
TickerID,
LineItem,
Action,
InsertedOn,
InsertedBy
)
VALUES
(TRIM(@TickerID), TRIM(Src.LineItem), 'I', GETDATE(),@UserID);
SELECT @Start=MIN(ID) FROM #Tmpdata
SELECT @Count=MAX(ID) FROM #Tmpdata
WHILE (@Start<=@Count)
BEGIN
IF NOT EXISTS(SELECT * FROM tblSectionLineItemTemplate WHERE TickerID=@TickerID
AND SectionID IN (SELECT SectionID FROM tblSectionTemplate WHERE TickerID=@TickerID AND Section='Model Output' AND Action<>'D')
AND LineItemID IN (SELECT LineItemId FROM TblLineItemTemplate WHERE TickerID=@TickerID
AND LineItem IN (
SELECT LineItem FROM #Tmpdata WHERE ID=@Start
)))
BEGIN
SELECT @MaxOrder=MAX(ISNULL(OrderID,0))+1 FROM tblSectionLineItemTemplate WHERE TickerID=@TickerID
INSERT INTO tblSectionLineItemTemplate
(
TickerID,
SectionID,
LineItemID,
OrderID,
InsertedOn,
UserID
)
VALUES
(
@TickerID,
(SELECT SectionID FROM tblSectionTemplate WHERE TickerID=@TickerID AND Section='Model Output' AND Action<>'D'),
(SELECT LineItemId FROM TblLineItemTemplate WHERE TickerID=@TickerID AND LineItem IN (SELECT LineItem FROM #Tmpdata WHERE ID=@Start)),
@MaxOrder,
GETDate(),
@UserID
)
END
SET @Start=@Start+1
END
SELECT L.LineItemId,L.LineItem from TblLineItemTemplate L INNER JOIN
(
SELECT value as LineItem
FROM STRING_SPLIT(@CommaSeparatedItems, ',')
) V
ON UPPER(TRIM(L.LineItem))=UPPER(TRIM(V.LineItem)) AND L.TickerID=@TickerID
DROP TABLE IF EXISTS #Tmpdata
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT @ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
RAISERROR( @ErrorMessage,
@ErrorSeverity,
@ErrorState
);
END CATCH
END
My C# code which would call SP
public async Task<ResponseContextDto> ConvertToPercentLineItem(string tickerid, string items)
{
DataSet ds = new DataSet();
DataTable dt=new DataTable();
string userid = GlobalVariable.strLoginID;
ResponseContextDto oResponseContext = new ResponseContextDto();
string? message = "";
try
{
#region db operation start
SqlParameter[] spParameter = new SqlParameter[3];
spParameter[0] = new SqlParameter("@TickerID", SqlDbType.VarChar);
spParameter[0].Direction = ParameterDirection.Input;
spParameter[0].Value = tickerid;
spParameter[1] = new SqlParameter("@CommaSeparatedItems", SqlDbType.VarChar);
spParameter[1].Direction = ParameterDirection.Input;
spParameter[1].Value = items;
spParameter[2] = new SqlParameter("@UserID", SqlDbType.VarChar);
spParameter[2].Direction = ParameterDirection.Input;
spParameter[2].Value = userid;
ds = await SqlHelper.ExecuteDatasetAsync(ConnectionManager.GetConnectionString(), CommandType.StoredProcedure, "USP_InsertBMAsLineItem", spParameter);
oResponseContext.IsSuccess = Status.Success;
oResponseContext.Message = Status.Message(Status.Success);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
dt = ds.Tables[0];
oResponseContext.ResponseData = dt;
}
else
{
oResponseContext.ResponseData = null;
}
#endregion
}
catch (Exception ex)
{
oResponseContext.IsSuccess = Status.Fail;
oResponseContext.Message = "Error " + ex.Message;
oResponseContext.ResponseData = null;
}
return oResponseContext;
}
I also tried this way to capture return tabular data from SP into c# datatable but still no luck.
string userid = GlobalVariable.strLoginID;
ResponseContextDto oResponseContext = new ResponseContextDto();
DataTable table = new DataTable();
using (var con = new SqlConnection(ConnectionManager.GetConnectionString()))
using (var cmd = new SqlCommand("USP_InsertBMAsLineItem", con))
using (var da = new SqlDataAdapter(cmd))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@TickerID", tickerid));
cmd.Parameters.Add(new SqlParameter("@CommaSeparatedItems", items));
cmd.Parameters.Add(new SqlParameter("@UserID", userid));
da.Fill(table);
}
please guide me what to change in c# code or in SP code.
Thanks
|
|
|
|
|
You haven't explained what you mean by "execution stuck" or "still no luck".
If you want us to help you, you need to explain precisely what the problem is.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Sir there was a problem in SP code. now everything is working fine after fixing. Thanks
|
|
|
|
|
Mou_kol wrote: here was a problem in SP code.
But you wrote yesterday:
Quote: when i execute SP from SSMS then everything goes fine
|
|
|
|
|
What's the issue? Any error? Include that in your question always.
|
|
|
|
|
You prototype with a trivial example; when that that works, you throw the kitchen sink at it; not before.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
I'm using WPF MVVM in my project. I have used Interaction.Behaviors in the root section of one of my views:
<interactivity:Interaction.Behaviors>
<local:SfDataPagerBehavior_OnDemand />
<local:SfDataPagerBehavior_File />
</interactivity:Interaction.Behaviors>
One of the Behavior classes is:
public class SfDataPagerBehavior_File : Behavior<EquipmentIdentitySetting>, IRecipient<FileFilterText>, IRecipient<UpdateDatagrid_Pdf>
{
public SfDataPagerBehavior_File()
{
WeakReferenceMessenger.Default.Register<FileFilterText>(this);
WeakReferenceMessenger.Default.Register<UpdateDatagrid_Pdf>(this);
}
protected override void OnAttached()
{
base.OnAttached();
.
.
AssociatedObject.dataPager_file.OnDemandLoading += OnOnDemandLoading;
.
.
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.dataPager_file.OnDemandLoading -= OnOnDemandLoading;
}
public async void Receive(FileFilterText message)
{
}
public async void Receive(UpdateDatagrid_Pdf message)
{
}
}
I want to dispose all Interaction.Behaviors in the view by pressing a button.
How can I do this?
|
|
|
|
|
That's one of the traps of MVVM: over-engineering in order to fit the app to the pattern. It presumes one is incapable of coming up with something better on their own for their app's needs.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
I have the following model:
public class Equipment
{
[Key]
public int EquipmentId { get; set; }
[Required]
public string EquipmentCode { get; set; }
[Required]
public string EquipmentTitle { get; set; }
[Required]
public int CostCenterId { get; set; }
public CostCenter CostCenter { get; set; }
public int? InfoId { get; set; }
[ForeignKey("InfoId")]
public EqInfo? EqInfo { get; set; }
public Catalogue? Catalogue { get; set; }
}
public class EqInfo
{
[Key]
public int InfoId { get; set; }
[Required]
public string InfoFileName { get; set; }
public virtual List<Equipment> Equipments { get; set; }
}
I want to update the EqInfo entity to null in a list of selected items:
foreach (var row in AssociatedObject.dataGrid.SelectedItems)
{
var _sqliteContext = new SQLiteContext();
var selectedRecord = _sqliteContext.Equipments.Include(x => x.EqInfo).FirstOrDefault(x => x.EquipmentId == (int)reflector2.GetValue(row, "EquipmentId"));
selectedRecord.EqInfo = null;
list2.Add(selectedRecord);
_sqliteContext.Dispose();
}
selectedRecord.EqInfo = null; not works as expected. It keeps the previous value and is not set to null.
How can I fix it?
|
|
|
|
|
You are adding a new record to list2 with the value null , not updating the existing one.
|
|
|
|
|
I use BulkUpdate but I need to have a list of modified entities first. My problem is in the modification part. I did not provide the BulkUpdate part because I don't have any problem with it. Setting a null value to the EqInfo does not nullify the record.
modified 1-Aug-22 4:19am.
|
|
|
|
|
Sorry, I do not understand what that has to do with your question.
|
|
|
|
|
I want to remove any value in EqInfo(FOREIGN KEY). So, I tried to set it to null. But this method does not remove the record from table.
|
|
|
|
|
Yeah. Setting a FK to null is just setting a value. It will never remove a record from a table. You're just breaking a link between two records.
|
|
|
|
|
If you want to save your changes to your database, you need to call SaveChanges before you Dispose of your context.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I wouldn't "null" a relation in one case and not another. I'd create one "default" ("blank") EqInfo record to be used in those cases when Equipemnt "has none". The "reserved" InfoId could be "0" or "1"; so you use that for filtering the existence of an "actual" EqInfo's.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Hi All,
need to right a test case for webapi which is used to upload a excel sheet. currently to get file into webpai using code like HttpFileCollection file = HttpContext.Current.Request.Files;
Now to write test case for the webapi(with Moq), need to mock HttpContext.Current.Request.Files, this should have data as same as uploading excel file (even its ok to read from share location).
Please suggest the code sample or any working code.
Thanks in Advance.
|
|
|
|
|
|
Thanks for the reply, but this article not suitable for requirements.
while uploading a excel sheet, in webapi assigning this file to HttpFileCollection = HttpContext.Current.Request.Files, now need to mock HttpContext.Current.Request.Files which is having same excel file data to continue the code testing.
|
|
|
|
|
Not sure if this is the correct group for this question but I am working with C#.
I'm migrating from VS2005 to VS2022 and having problem with ControlDesigner in my Control. It seems that the ControlDesigner is not functioning. I'm not too familiar with ControlDesigner programming so after working on this for a while I decided to start from scratch. I found an example in Microsoft Help Viewer for ControlDesigner. I copied and pasted the example code into a project UserControl1 and it too does not seem to function. When moving the mouse over the control the outline does not highlight and also the OutlineColor property is not shown in the Properties window.
Can someone help? Below is the sample code from Help Viewer. The only difference the test control is called UserControl1
Thank you.
using System.ComponentModel;
namespace TestApp
{
public class ExampleControlDesigner : System.Windows.Forms.Design.ControlDesigner
{
private bool mouseover = false;
private Color lineColor = Color.White;
public Color OutlineColor
{
get
{
return lineColor;
}
set
{
lineColor = value;
}
}
public ExampleControlDesigner()
{
}
protected override void OnMouseEnter()
{
this.mouseover = true;
this.Control.Refresh();
}
protected override void OnMouseLeave()
{
this.mouseover = false;
this.Control.Refresh();
}
protected override void OnPaintAdornments(System.Windows.Forms.PaintEventArgs pe)
{
if (this.mouseover)
{
pe.Graphics.DrawRectangle(
new Pen(new SolidBrush(this.lineColor), 6),
0,
0,
this.Control.Size.Width,
this.Control.Size.Height);
}
}
protected override void PreFilterProperties(System.Collections.IDictionary properties)
{
PropertyDescriptor pd = TypeDescriptor.CreateProperty(
typeof(ExampleControlDesigner),
"OutlineColor",
typeof(System.Drawing.Color),
new Attribute[] { new DesignOnlyAttribute(true) });
properties.Add("OutlineColor", pd);
}
}
[DesignerAttribute(typeof(ExampleControlDesigner))]
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
}
}
modified 30-Jul-22 7:42am.
|
|
|
|
|
Here's the same code; only more complete, it seems.
ControlDesigner Class (System.Windows.Forms.Design) | Microsoft Docs
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Yes this is the example where a copied the test code from. I tried this example 'as is' but it did not work.
The code in my question is the same; It just uses a UserControl1 that I created in my test project while debugging.
I did not include the UserControl1.Designer.cs code which includes the other code.
Thank you
|
|
|
|
|