|
Hello,
I have a project in vs2019, actually i have the following error and i can not find the error neither in google nor in microsoft, it is says is in line 1, but i can not go to the find.
Any help?
|
|
|
|
|
JSDoc indicates that this is a JavaScript/TypeScript issue and has nothing to do with C#.
|
|
|
|
|
Great, I know nothing about typescript, and i did not touch (because i nothing about typescript) any code of typescript, this mean: How did a made this error if i don not kwon? o How to fix?
Thanks
|
|
|
|
|
What type of project do you have here? Have you searched through your code for @extends?
|
|
|
|
|
I have searched @Extends, i have it, but all are // or */ but i did not touched those files.
I even knew their exists.
I loaded the project (ASPNET CORE with C#) on a different computer and the error just disapear.
Why? I don't know
|
|
|
|
|
That suggests that there is something wrong with you project settings. If this is genuinely a C# project then please show the line(s) of code where the error occurs.
modified 4-Jul-22 13:08pm.
|
|
|
|
|
The above tool is now deprecated, what is a good alternative that works well, complements Selenium? I use Visual Studio / C#. Thank you
|
|
|
|
|
I know you need Java to run this toolkit, but JMeter[^] is hard to beat for this. It is easier to use than something like Loadrunner, and integrates well with Selenium.
|
|
|
|
|
Thanks for the reply. I have come across JMeter, and you are right it is Java that is the deal-breaker for me thanks anyway
|
|
|
|
|
I have a table that store person data. There are NamePrefix and NameSuffix columns in the data. Both are nullable.
Here is the Persons table
CREATE TABLE [dbo].[Persons]
(
Id INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
RemoteId UNIQUEIDENTIFIER NOT NULL,
ClientRepId INT NULL FOREIGN KEY (ClientRepId) REFERENCES Persons(Id),
SupervisorId INT NULL FOREIGN KEY (SupervisorId) REFERENCES Persons(Id),
PersonType INT NOT NULL,
Prefix INT NULL,
FirstName VARCHAR(MAX),
LastName VARCHAR(MAX),
NickName VARCHAR(MAX),
Suffix INT NULL,
Title VARCHAR(MAX)
)
Here is the PersonEntity
namespace CLOI.Entities
{
public class PersonEntity : _EntityBase
{
private PersonType _PersonType;
public PersonType PersonType
{
get { return _PersonType; }
set
{
SetProperty<PersonType>("PersonType", ref _PersonType, value);
}
}
private NamePrefix _Prefix;
public NamePrefix Prefix
{
get { return _Prefix; }
set
{
SetProperty<NamePrefix>("Prefix", ref _Prefix, value);
}
}
private string _FirstName;
public string FirstName
{
get { return _FirstName; }
set
{
SetProperty<string>("FirstName", ref _FirstName, value);
}
}
private string _LastName;
public string LastName
{
get { return _LastName; }
set
{
SetProperty<string>("LastName", ref _LastName, value);
}
}
private string _NickName;
public string NickName
{
get { return _NickName; }
set
{
SetProperty<string>("NickName", ref _NickName, value);
}
}
private NameSuffix _Suffix;
public NameSuffix Suffix
{
get { return _Suffix; }
set
{
SetProperty<NameSuffix>("Suffix", ref _Suffix, value);
}
}
private string _Title;
public string Title
{
get { return _Title; }
set
{
SetProperty<string>("Title", ref _Title, value);
}
}
public string FullName
{
get { return $"{FirstName} {LastName}"; }
}
private int _ClientRepId;
public int ClientRepId
{
get { return _ClientRepId; }
set
{
SetProperty<int>("ClientRepId", ref _ClientRepId, value);
}
}
}
}
I'm trying to get this to work:
results = (from p in dc.Persons
select new PersonEntity
{
RemoteId = p.RemoteId,
ClientRepId = p.ClientRepId ?? 0,
SupervisorId = p.SupervisorId ?? 0,
PersonType = (PersonType)p.PersonType ?? PersonType.None,
Prefix = (NamePrefix)p.Prefix ?? NamePrefix.None,
FirstName = p.FirstName,
LastName = p.LastName,
NickName = p.NickName,
Suffix = (NameSuffix)p.Suffix ?? NameSuffix.None,
Title = p.Title,
CreatedById = p.CreatedById,
CreatedDT = p.CreatedDT,
LastModifiedById = p.Id,
LastModifiedDT = p.ModifiedByDT.Value,
DeletedById = p.DeletedById,
DeletedDT = p.DeletedByDT.Value
}).Where(predicate).ToList();
It's throwing a null ref exception because both the NamePrefix and NameSuffix columns are null.
I tried to change those lines like this:
Prefix = (NamePrefix)p.Prefix ?? NamePrefix.None,
But that won't compile with "
Operator '??' cannot be applied to operands of type 'PersonType' and 'PersonType' "
What's the right way to do this?
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
modified 2-Jul-22 15:40pm.
|
|
|
|
|
It's going to depend on the definition of the NamePrefix and NameSuffix classes, as well as the p.Prefix property.
I'd hope that the two classes are derived from whatever class Prefix is, but you've probably got that covered. Check that Prefix is also nullable.
"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 updated my original post to show the SQL table and the Person entity, as well as my updated Linq-To-SQL quert in my DAL. PrefixType and SuffixType are both enums.
The Prefix and Suffix columns in the table are nullable. The PersonEntity has both PrefixType and SuffixType enum properties. But since the underlying data for both is null, I'd like to set the enum to PrefxType.None and SuffixType.None.
So I'm trying to coerce the enum property to None for null data values. In this line here, p.Prefix is a null int.
Prefix = (NamePrefix)p.Prefix ?? NamePrefix.None
Thanks
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
The way I'd fix this is to make those column NOT nullable. The "None" value would be 0. But, since I don't know the business rules, you may or may not get away with this.
|
|
|
|
|
You're right. At the time I didn't have the 'None' enum, but it makes sense. Much better.
Thanks
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
And there is your problem: enum is not a nullable type (it's syntactical sugar for a boring old int ) so it can't be tested using the ?? operator - hence the error message.
I'd strongly suggest that your data source is the problem, and that that shouldn't be capable of returning null value in that field - but if you cast it to a nullable int, you should be able to use that with the ?? operator to return an enum .
I haven't tested it - I'm on a tablet and coding becomes a true PITA without a proper KB and mouse!
"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 just had a thought and tested it. This works
results = (from p in dc.Persons
select new PersonEntity
{
RemoteId = p.RemoteId,
ClientRepId = p.ClientRepId ?? 0,
SupervisorId = p.SupervisorId ?? 0,
PersonType = (PersonType)p.PersonType,
Prefix = p.Prefix == null ? NamePrefix.None : (NamePrefix)p.Prefix,
FirstName = p.FirstName,
LastName = p.LastName,
NickName = p.NickName,
Suffix = p.Suffix == null ? NameSuffix.None : (NameSuffix)p.Suffix,
Title = p.Title,
CreatedById = p.CreatedById,
CreatedDT = p.CreatedDT,
LastModifiedById = p.Id,
LastModifiedDT = p.ModifiedByDT.Value,
DeletedById = p.DeletedById,
DeletedDT = p.DeletedByDT.Value
}).Where(predicate).ToList();
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
Just curious;
How did
Kevin Marois wrote: CreatedById = p.CreatedById,
CreatedDT = p.CreatedDT,
LastModifiedById = p.Id,
LastModifiedDT = p.ModifiedByDT.Value,
DeletedById = p.DeletedById,
DeletedDT = p.DeletedByDT.Value
affect the answer?
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
It didn't. I had ommitted those properties before for brevity
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
An Enum on a nullable field? A null value cannot be cast to an enum value. Enums are value types, not reference types, and they must have a value. They cannot be null.
|
|
|
|
|
Please see my reply to Griff.
Thanks
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
Depending on how well the ORM works, you may be able to use:
Prefix = (NamePrefix?)p.Prefix ?? NamePrefix.None,
NB: Using an enum for a name prefix or suffix seems like a bad idea. What happens when your users try to add a person whose prefix / suffix doesn't exist in your list? Are you going to make that person wait while you recompile your application?
I'd suggest either using a lookup table, or just free-text values.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I have a problem where I am creating a data layer for a project, where I have a scenario I don't really know which solution is better. The main function of the project/service is to regularly check for changes in several databases and copy the information to a data warehouse(one big database really).
One scenario is when you add an new table to be tracked in the system. It has a specific task to copy the entire table from the site database to the warehouse. It does this by opening a data reader and then generate a batch INSERT script until it reaches a limit and then it execute the script towards the data warehouse. In pseudo code it looks like this:
using (IDbCommand clientCommand = Connection.CreateCommand())
{
clientCommand.CommandText = clientSql;
using (IDataReader clientReader = clientCommand.ExecuteReader()
{
while(clientReader.Read())
{
AddDataToList(clientReader);
}
if(List.Count >= 100)
{
using (var com = warehouseConnection.CreateCommand())
{
com.CommandText = GetInsertScript(List);
AddedCount += com.ExecuteNonQuery();
}
}
}
}
Its more complicated than that, with more checks and sql code. I see two main issues with this:
1: Database logic in business logic that I want to move over to my data layer. This will make the code testable and easier to understand.
2: I do not like that we wait for data from the client, and then wait for data to be written to the other database, when this could be done in 2 tasks that transfer and receiving information asynchronously with each other via ConcurrentQueue for instance. This speeds up the process, which is also an issue in some cases.
The problem I am having is that I that I cant get all the data in one go and then add it to the warehouse. Sometimes the tables are huge, which can lead to memory issues on the service. So I want to process the data as they come in through the client reader and continuously add them to the warehouse. But, I also want the database logic in the data layer. Adding the data is simple, but retrieving it is a bit more complicated. Researching this issue have given me 2 choices:
Option 1 (Pull from data layer):
I could use the yield keyword to return data as it comes through the reader in my data layer:
public IEnumerator<object[]> GetTableContent()
{
SqlCommand command = new SqlCommand("command", SqlConnection);
using (var reader = command.ExecuteReader())
{
var items = new object[reader.FieldCount];
reader.GetValues(items);
yield return items;
}
}
With this I can use it in a foreach loop, and each time I get a return I add it to the queue. Another task takes from the queue and adds it to the data warehouse. With this I can control the when I want a new result from the site database and not add to many items to the queue if the data warehouse is busy.
Options 2 (Push from data layer):
I can use Actions to push data to the caller:
public void GetTableContent(Action<object[]> dataAction)
{
SqlCommand command = new SqlCommand("command", SqlConnection);
using (var reader = command.ExecuteReader())
{
var items = new object[reader.FieldCount];
reader.GetValues(items);
dataAction.Invoke(items);
}
}
Here I call the method and it will start to give me information through an action instead.
From the 2 options I find the pull method is a little more graceful and it is more inline with how the reader works. But I have also read that people are having issues with this where having yield returns in using have been an issue. That's where option 2 has been suggested. It should be be able to do the exact same thing. So... which option is better. Option 1 or Option 2 or maybe there is another way I haven't even considered?
|
|
|
|
|
To be honest, neither solution really appeals to me. Have you considered using a database server to do the ETL instead? SQL Server, for instance, provides excellent ETL capabilities.
|
|
|
|
|
That is a very interesting suggestion. I cant use that at the moment, because the system is not setup for that. But its clear this is the way to go. Thank you for that!
|
|
|
|
|
I’m looking to start a new project in a field I have not explored before so I’m looking for advice on libraries to use and approaches. E.g. could this be done with Tapi?
Two laptops running Windows (7 or above) both in the same subnet. One is nominated the masted and the other the slave.
The master is to set up a voice link to the other laptop, communications is alway only between these 2 laptops. Must have the ability to mute the mic programmatically. Lastly all communications need to be written to an audio file. There is no requirement to have a video link.
The master also needs to pass data instruction to the slave, this is not connected to the voice communications. The slave needs to acknowledge the instruction from the master.
What libraries would recommend, this is to be a c# project.
Thanks in advance
|
|
|
|
|